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