ASP.NET Hosting Indonesia – JaringanHosting.com :: Cara Mencegah Serangan SQL Injection dengan ASP.NET

Saya kembali lagi menulis artikel mengenai SQL Injection. Berbeda dengan artikel sebelumnya yang saya tulis yakni, Cara Melindungi Website PHP Anda dari SQL Injection. Kali ini saya akan membahas mengenai cara mencegah SQL Injection dengan ASP.NET. Sebagai seeorang web developer atau hanya admin sebuah website. Anda sangat perlu untuk memperhatikan hal ini/ Hal yang dianggap sepele sebenarnya adalah hal yang sangat rentan dan berbahaya. Sampai di tahun 2014, SQL Injection adalah cara yang paling banyak digunakan oleh para hackers. Lalu tentu Anda berpikir untuk menghindari hal ini bukan?

thief-web-197x395

 

Jika Anda masih bertanya-tanya mengenai SQL Injection berikut kembali saya jabarkan mengenai SQL Injection

Pada dasarnya, SQL Injection adalah metode hacking yang digunakan terhadap situs web untuk mendapatkan akses ke data situs yang disimpan di dalam database SQL. SQL Injection digunakan untuk mendapatkan akses ke informasi database, untuk menghancurkan informasi database, atau untuk memanipulasi informasi database.

Ada beberapa skenario yang membuat serangan SQL Injection menjadi mungkin. Penyebab paling umum adalah kasus di mana Anda secara dinamis membangun pernyataan SQL tanpa menggunakan parameter yang dibuat dengan benar. Sebagai contoh, perhatikan kode query SQL ini yang dicari oleh Penulis berdasarkan nomor jaminan sosial yang diberikan melalui QueryString:

Jika Anda memiliki kode SQL seperti potongan di atas, maka seluruh database dan aplikasi Anda masuk ke golongan rentan. Bagaimana? Nah dalam skenario, hacker biasanya akan mencoba membobol situs menggunakan nomor jaminan sosial yang akan dilakukan seperti:

Ini akan dilakukan seperti apa yang developer harapkan, dan pencarian database untuk informasi penulis disaring oleh nomor jaminan sosial. Tetapi karena nilai parameter QL belum dikodekan, hacker bisa dengan mudah mengubah nilai querystring untuk menanamkan pernyataan SQL tambahan setelah nilai untuk mengeksekusi. Sebagai contoh:

Perhatikan bagaimana saya bisa menambahkan ‘;DROP DATABASE pubs —  dengan nilai querystring SSN dan menggunakannya untuk mengakhiri pernyataan SQL saat ini (melalui karakter “;”), dan kemudian menambahkan sendiri pernyataan SQL yang berbahaya untuk string , dan kemudian keluar comment sisa pernyataan (melalui karakter”-” ). Karena kita hanya secara manual concatenating pernyataan SQL ke dalam kode kita, kita akan berakhir dengan melewati semua ini ke database, yang akan mengeksekusi query pertama terhadap tabel editor, dan kemudian menghapus tabel database pub kita. Dan semuanya akan hilang begitu saja

Dalam kasus ini Anda harus berpikir tentang ide hacker anonim yang akan mencoba menghapus tabel database Anda. Alih-alih hanya menghancurkan data, hacker malah bisa menggunakan kerentanan kode di atas  untuk melakukan JOIN dan mengambil semua data dalam database Anda dan menampilkannya pada sebuah halaman (yang memungkinkan mereka untuk mengambil username / password / credit-card). Mereka juga bisa menambahkan pernyataan UPDATE / INSERT untuk memodifikasi harga produk, menambahkan admin baru, dan benar-benar mengacaukan hidup Anda.

Bagaimana Anda melindungi diri Anda dari semua hal buruk tersebut?

Serangan SQL Injection adalah sesuatu yang perlu Anda khawatirkan. Tentang terlepas dari teknologi pemrograman web yang Anda gunakan. Beberapa aturan yang sangat dasar Anda harus selalu Anda ikuti :

1) Jangan membangun Laporan SQL dinamis tanpa menggunakan mekanisme parameter encoding yang aman. Kebanyakan API data (termasuk ADO + ADO.NET) memiliki dukungan untuk memungkinkan Anda untuk menentukan dengan tepat jenis parameter yang disediakan (misalnya: string, integer, tanggal) dan dapat memastikan bahwa mereka dikodekan bagi Anda untuk menghindari hacker yang mencoba untuk memanfaatkannya. Selalu menggunakan fitur ini.

Misalnya, dengan SQL dinamis menggunakan ADO.NET Anda bisa menulis ulang kode di atas seperti di bawah ini untuk membuatnya aman:

Ini akan mencegah seseorang yang mencoba menyelinap ke dalam SQL, dan menghindari masalah data lainnya. Perhatikan bahwa desainer TableAdapter/DataSet built-ke VS 2005 menggunakan mekanisme ini secara otomatis, seperti halnya ASP.NET 2.0 kontrol sumber data.

Salah satu kesalahan persepsi umum adalah bahwa jika Anda menggunakan SPROCs atau ORM, Anda benar-benar aman dari Serangan SQL Injection. Hal ini tidak benar. Anda masih perlu untuk memastikan Anda berhati-hati ketika Anda melewati nilai ke SPROC, dan / atau ketika Anda pergi atau menyesuaikan permintaan dengan ORM yang Anda akan melakukannya dengan cara yang aman.

2) Selalu melakukan peninjauan keamanan aplikasi Anda sebelum menggunakannya. Titik ini adalah suatu yang super penting. Terlalu sering saya dengar dari tim yang melakukan peninjauan keamanan benar-benar rinci sebelum pergi tinggal, kemudian memiliki beberapa “benar-benar kecil” update mereka membuat ke situs minggu/bulan kemudian di mana mereka Sign In melakukan peninjauan keamanan. Selalu melakukan review keamanan.

3) Jangan pernah menyimpan data sensitif di dalam teks di dalam database. Pendapat pribadi saya adalah bahwa password harus selalu hash satu arah. ASP.NET 2.0 API melakukannya untuk anda secara otomatis secara default. Jika Anda memutuskan untuk membangun sendiri databese toko member Anda, saya akan merekomendasikan memeriksa sumber kode untuk pelaksanaan penyedia member kita sendiri bahwa kita dipublikasikan di sini. Juga pastikan untuk mengenkripsi kredit-kartu dan data pribadi lainnya dalam database Anda. Dengan cara ini bahkan jika database Anda disusupi, data pribadi setidaknya pelanggan Anda tidak dapat dieksploitasi.

4) Pastikan Anda menulis otomatisasi unit test yang secara khusus memverifikasi Anda ke lapisan akses data dan aplikasi terhadap serangan SQL Injection. Dan memberikan lapisan keamanan tambahan untuk menghindari sengaja memperkenalkan bug keamanan yang buruk ke dalam aplikasi Anda.

5) Mengunci database Anda. Jika aplikasi web Anda tidak memerlukan akses ke tabel tertentu, maka pastikan bahwa mereka semua tidak memilik izin untuk itu. Jika hanya read-only maka akan menghasilkan laporan dari tabel hutang account Anda maka pastikan Anda menonaktifkan insert / update / menghapus akses.

 

PHP Hosting Indonesia – JaringanHosting.com :: Cara Melindungi Website PHP Anda dari SQL Injection

Sebagai developer web, saya sering membaca artikel tentang hacker, yang dimana hacker tersebut melakukan infiltrasi website melalui metode yang ditakuti yaitu ‘SQL Injection’ dan kemudian hacker tersebut benar-benar mengambil kendali, merubah, mendapatkan akses, atau merusak website yang telah berhasil diobobol olehnya. Sebagai sesama web developer, saya yakin Anda ingin tahu bagaimana untuk melindungi website anda dari SQL Injection. Jika pada artikel sebelumnya saya pernah membahas tentang Cara Menemukan SQL Injections Menggunakan HTTP Logs. Pada artikel ini, Anda akan mengetahui apa itu SQL Injection, apa yang dapat Anda lakukan untuk mencegah serangan SQL Injection, dan rekomendasi tambahan dari saya yang mudah untuk dilakukan untuk membuat website Anda lebih aman.

thief-web-197x395

Sebenarnya, Apa itu SQL Injections?

Pada dasarnya, SQL Injection adalah metode hacking yang digunakan terhadap situs web untuk mendapatkan akses ke data situs yang disimpan di dalam database SQL. SQL Injection digunakan untuk mendapatkan akses ke informasi database, untuk menghancurkan informasi database, atau untuk memanipulasi informasi database.

Contoh :

Misalkan Anda seorang profesional dengan bisnis Anda sendiri. Anda telah membuat database SQL dengan tabel yang berisi semua informasi klien Anda, yang Anda gunakan untuk mengirimkan pemberitahuan penting, penagihan, dll. Anda butuh satu tahun untuk mendapatkan 50.000 klien yang sangat penting.

Contohnya ini adalah SQL query Anda di PHP log-in script Anda :

Suatu hari, seorang hacker mengatakan bahwa dirinya telah berhasil masuk ke dalam databese anda. Ia menggunakan username Anda lalu Login
Si hacker tersebut kini telah berhasil masuk kemudian melihat setiap table di databese Anda. Sampai si hacker tersebut mengetahui nama table Anda kemudian melakukan :
Maka dengan begitu semua informasi di table Anda tersebut akan hilang. Karena si hacker tersebut baru saja men-drop table Anda. Lalu apa yang bisa kita lakukan untuk mencegah hal buruk ini terjadi? Berikut saya akan memberikan info kepada Anda untuk langkah apa saja yang perlu Anda lakukan sekligus rekomendasi dari saya.

Langkah 1 : Gunakan mysql_real_escape_string () 

Fungsi PHP ini pas untuk digunakan dalam query SQL dan melindungi Anda dari serangan. Query Anda  sekarang akan terlihat seperti ini:

Langkah ke 2 : Gunakan mysql_query ()  Menggunakan ‘mysql_query ()’ berarti Anda memiliki perlindungan tambahan terhadap SQL Injection. Tanpa ‘mysql_query ()’ dapat memungkinkan hacker untuk menggunakan beberapa perintah SQL dari ‘username’ field Anda, bukan hanya satu, ada juga kerentanan lain. ‘mysql_query ()’ hanya akan memberikan izin satu perintah pada satu waktu. Jadi, query Anda sekarang akan terlihat seperti ini:

Rekomendasi 1: Pusatkan Koneksi Databese Anda  Di dalam script Anda, Anda harus memusatkan koneksi databese Anda ke satu halaman. Pada setiap halaman yang yang dibutuhkan, cukup gunakan fungsi ‘include ()’ untuk memasukkan halaman yang informasi koneksi databasenya di SQL Anda. Hal ini akan memaksa Anda untuk membuat query dengan format yang sama pada setiap halaman yang Anda buat, dan mengurangi kemungkinan kesalahan yang menghasilkan sebuah bug. Jadi, katakanlah kita membuat sebuah file yang disebut ‘connections.php’ dan masukkan kode ini ke dalam file tersebut:

Rekomendasi 2: Clean Data pada Awal Page Banyak bahasa pemrograman memaksa Anda untuk mendeklarasikan variabel sebelum Anda dapat menggunakannya di sepanjang script. PHP tidak memaksa Anda untuk melakukan hal ini, namun, itu adalah kebiasaan yang baik untuk membersihkan variabel di awal halaman. Tentu seseorang akan  bertanya, “Jika saya membersihkan setiap variabel di seluruh halaman, mengapa saya harus membersihkan variabel di atas? Apakah aku tidak melakukan hal yang sama dengan rekomendasi Anda?”. Hal ini lebih mudah jika Anda membersihkan variabel di awal halaman untuk beberapa alasan yang berbeda, di luar format.

  • Mengurangi jumlah kode yang Anda tulis.
  • Setelah variabel bersih, Anda dapat menggunakannya secara bebas di seluruh halaman, tanpa takut ada sebuah bug.
  • Terasa lebih bersih dan lebih terorganisir, memungkinkan Anda untuk bekerja lebih mudah, dan menghindari kesalahan.

Jika kita membersihkan variabel di awal halaman, script kita akan terlihat seperti ini:

Mengurangi jumlah yang harus Anda ketikkan lebih lanjut. Lihatlah contoh berikut.

Rekomendasi 3: Periksa Lagi, Bahkan Setelah Anda melakukan Cleaning Data Anda dapat melakukan pemeriksaan tambahan untuk mencegah proses yang tidak penting berjalan pada server Anda. Hal ini dicapai dengan menambahkan script check seperti berikut ini :

Sekarang Anda telah berhasil melakukan pencegahan terhadap SQL Injections. Sekian mengenai Cara Melindungi Website PHP Anda dari SQL Injections. Semoga bermanfaat

 

SQL Hosting Indonesia – JaringanHosting :: Cara Menemukan SQL Injections Menggunakan HTTP Logs

Selamat siang pembaca setia Blog JaringanHosting. Jika di artikel sebelumnya kami telah memberikan Cara Membuat Social Sharing Grafik Batangan Untuk WordPress, kali ini kami akan memberikan tutorial tentang bagaimana cara menemukan orang yang bermaksud jahat dengan melakukan SQL Injections di website Anda melalui HTTP logs. Akan kami jelaskan dengan rinci mengenai artikel Cara Menemukan SQL Injections Menggunakan HTTP Logs.

Sebelum Anda memulai untuk mencoba mempraktekkan tutorial ini pastikan bahwa anda telah mengaktifkan raw logs untuk akun hosting Anda. Untuk mengaktifkan akses log HTTP, ikuti prosedur di bawah ini :

  • Masuk ke halaman Stats/Raw Logs di control panel Anda
  • Di Raw Log File Access section, klik tombol “Enable”

Jika SQL Injection terjadi sebelum Anda mengaktifkan logs, maka Anda tidak akan bisa menemukan jejak penjahat yang melakukan SQL Injection. Anda mungkin perlu menghubungi Support dan meminta mereka untuk memeriksa log HTTP untuk menyelidiki sebuah SQL Injection.

Tool yang diperlukan

Kita mungkin membutuhkan tool khusus untuk menyelidiki kasus SQL Injections. Untuk membantu Anda menemukan SQL Injection dari Log HTTP Anda, Anda akan perlu menggunakan tool yang disebut BareGrep. Tool ini dapat didownload di sini. Pastikan Anda memilih yang “Free Version”. Ini adalah tool yang tidak diperlukan untuk diinstal pada komputer dan hanya berjalan dari file exe.

Siap untuk turun dan “Kotor”?

Bagian yang mengagumkan dari BareGrep  adalah memungkinkan Anda untuk drag dan drop beberapa file teks ke dalamnya. Ini berarti jika Anda tidak benar-benar yakin tanggal yang tepat SQL Injections terjadi, Anda dapat mencari beberapa file di semua teks hanya dalam satu pencarian.

Buka BareGrep dan pilih file teks yang ingin Anda cari. Sekarang drag dan drop file ke wilayah abu-abu BareGrep ini.

DragAndDropBareGrep

 

Temukan Hacker yang melakukan SQL Injections

Kita akan menggunakan pencarian kata kunci untuk menemukannya di baris log HTTP dimana SQL Injection terjadi.

Ini adalah kata kunci yang ingin saya gunakan di BareGrep

  • – (dua strip)
  • @@version
  • varchar
  • char
  • exec
  • execute
  • declare
  • cast

Sekarang saatnya untuk memasukkan setiap kata kunci satu per satu ke dalam kolom teks BareGrep ini.

BareGrep_Search_Example

 

Hasilnya, Kita menemukan sesuatu

Sekarang mari kita pilih garis di BareGrep dan lihat apa yang kita temukan. Setelah dipilih, copy dan paste baris ke dokumen Notepad kosong.

BareGrep_Copy_Selected_Items

 

Anda harus mendapatkan beberapa baris seperti baris HTTP berikut di bawah ini. Kelihatannya memang jahat tapi kami akan mencoba untuk menjelaskannya.

Ini adalah bagian dari garis menyatakan tanggal dan waktu (PacificTime) SQL Injection terjadi.

Bagian lainnya adalah web server dan alamat IP.

Menarik bukan? karena ia memberitahu Anda halaman itu rentan terhadap SQL Injection. Ini juga akan memberikan petunjuk tentang apa yang akan Anda butuhkan untuk menutup bug ini di situs Anda untuk mencegah hal ini terjadi lagi.

Bagian lainnya adalah apa yang mereka coba masukkan ke dalam web browser mereka ketika mencoba untuk memeriksa kerentanan SQL Injection di website Anda. Jika ada kerentanan kode ini menampilkan pesan kesalahan bersama dengan versi database SQL. Ini berarti bahwa database SQL menjawab dan menunjukkan bahwa web Anda rentan terhadap SQL Injection.

Inilah bagian terbaik dari log HTTP, alamat IP hacker! Contoh di sini milik DNS Google, tetapi ini adalah di mana alamat IP hacker akan berlokasi di log HTTP. Harap diingat bahwa kebanyakan orang akan menyembunyikan alamat IP mereka dan itu tidak berarti bahwa IP benar-benar milik si hacker tersebut. Orang jahat bisa saja menggunakan jaringan yang bukan milik mereka. Kemungkinan besar layanan proxy yang suka mereka gunakan.

Kerennya tentang hal ini adalah bahwa jika Anda berada di akun IIS 8 atau IIS 7, Anda memiliki kemampuan untuk memblokir alamat IP dengan menggunakan IIS Manager.

Oke, jadi sekarang Anda tahu bagaimana mereka memeriksa kerentanan di situs Anda. Di mana Anda dapat menemukan injeksi yang mengubah table Anda?

Untuk ini, Anda akan perlu untuk terus mencari di log HTTP. Apa yang dilakukan selanjutnya adalah masukkan alamat IP hacker ke BareGrep dan melihat semua injections yang digunakan oleh hacker tersebut. Hal ini juga akan menunjukkan bagian-bagian lain dari situs Anda orang yang dikunjungi.

Yang akan perlu untuk dicari adalah di log HTTP berikut . Potongan kode di log akan diikuti oleh sekelompok angka dan charters. Ini adalah di mana tabel dapat dimasukkan dengan URL/teks  jahat ke salah satu table Anda pada database SQL. Ini juga berarti bahwa halaman “/search.aspx” rentan terhadap SQL Injections.

Oke, jadi sekarang Anda sudah tau cara untuk mencegah SQL Injections terjadi di situs Anda.

Artikel ini dibuat untuk mencegah SQL injection terjadi lagi. Kami sangat berharap artikel ini dapat membantu kalian. Demikian mengenai Cara Menemukan SQL Injections Menggunakan HTTP Logs