Bekerja dengan kondisi kecocokan injeksi SQL - AWS WAF, AWS Firewall Manager, dan AWS Shield Advanced

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan kondisi kecocokan injeksi SQL

catatan

Ini adalah dokumentasi AWS WAFKlasik. Anda hanya boleh menggunakan versi ini jika Anda membuat AWS WAF sumber daya, seperti aturan dan ACL web, AWS WAF sebelum November 2019, dan Anda belum memigrasikannya ke versi terbaru. Untuk memigrasikan sumber daya Anda, lihatMemigrasi sumber daya AWS WAF Klasik Anda ke AWS WAF.

Untuk versi terbaru AWS WAF, lihatAWS WAF.

Penyerang terkadang menyisipkan kode SQL berbahaya ke dalam permintaan web sebagai upaya untuk mengekstrak data dari basis data Anda. Untuk mengizinkan atau memblokir permintaan web yang tampak berisi kode SQL berbahaya, buatlah satu atau beberapa injeksi SQL yang cocok dengan kondisi. Kondisi kecocokan injeksi SQL mengidentifikasi bagian dari permintaan web, seperti jalur URI atau string kueri, yang ingin Anda periksa AWS WAF Classic. Kemudian dalam prosesnya, ketika Anda membuat ACL web, Anda menentukan apakah akan mengizinkan atau memblokir permintaan yang tampak berisi kode SQL berbahaya.

Membuat kondisi kecocokan injeksi SQL

Saat membuat kondisi kecocokan injeksi SQL, Anda menentukan filter, yang menunjukkan bagian permintaan web yang ingin AWS WAF Classic periksa untuk kode SQL berbahaya, seperti URI atau string kueri. Anda dapat menambahkan lebih dari satu filter ke kondisi kecocokan injeksi SQL, atau Anda dapat membuat kondisi terpisah untuk setiap filter. Inilah cara setiap konfigurasi memengaruhi perilaku AWS WAF Klasik:

  • Lebih dari satu filter per kondisi kecocokan injeksi SQL (disarankan) - Saat Anda menambahkan kondisi kecocokan injeksi SQL yang berisi beberapa filter ke aturan dan menambahkan aturan ke ACL web, permintaan web hanya perlu mencocokkan salah satu filter dalam kondisi kecocokan injeksi SQL untuk AWS WAF Classic untuk mengizinkan atau memblokir permintaan berdasarkan kondisi tersebut.

    Misalnya, Anda membuat satu kondisi kecocokan injeksi SQL, dan kondisinya berisi dua filter. Satu filter menginstruksikan AWS WAF Classic untuk memeriksa URI untuk kode SQL berbahaya, dan yang lainnya menginstruksikan AWS WAF Classic untuk memeriksa string kueri. AWS WAF Classic memungkinkan atau memblokir permintaan jika tampaknya berisi kode SQL berbahaya baik di URI atau dalam string kueri.

  • Satu filter per kondisi kecocokan injeksi SQL — Saat Anda menambahkan kondisi kecocokan injeksi SQL terpisah ke aturan dan menambahkan aturan ke ACL web, permintaan web harus cocok dengan semua kondisi untuk AWS WAF Classic untuk mengizinkan atau memblokir permintaan berdasarkan kondisi.

    Misalkan Anda membuat dua kondisi, dan setiap kondisi berisi salah satu dari dua filter dalam contoh sebelumnya. Saat Anda menambahkan kedua kondisi ke aturan yang sama dan menambahkan aturan ke ACL web, AWS WAF Classic mengizinkan atau memblokir permintaan hanya ketika URI dan string kueri tampaknya berisi kode SQL berbahaya.

catatan

Saat menambahkan kondisi kecocokan injeksi SQL ke aturan, Anda juga dapat mengonfigurasi AWS WAF Classic untuk mengizinkan atau memblokir permintaan web yang tampaknya tidak mengandung kode SQL berbahaya.

Untuk membuat kondisi kecocokan injeksi SQL
  1. Masuk ke AWS Management Console dan buka AWS WAF konsol di https://console.aws.amazon.com/wafv2/.

    Jika Anda melihat Beralih ke AWS WAF Klasik di panel navigasi, pilih.

  2. Di panel navigasi, pilih injeksi SQL.

  3. Pilih Buat kondisi.

  4. Tentukan pengaturan filter yang berlaku. Untuk informasi selengkapnya, lihat Nilai yang Anda tentukan saat membuat atau mengedit kondisi kecocokan injeksi SQL.

  5. Pilih Tambahkan filter lain.

  6. Jika Anda ingin menambahkan filter lain, ulangi langkah 4 dan 5.

  7. Setelah selesai menambahkan filter, pilih Buat.

Nilai yang Anda tentukan saat membuat atau mengedit kondisi kecocokan injeksi SQL

Saat Anda membuat atau memperbarui kondisi kecocokan injeksi SQL, Anda menentukan nilai berikut:

Nama

Nama kondisi kecocokan injeksi SQL.

Nama hanya dapat berisi karakter alfanumerik (A-Z, a-z, 0-9) atau karakter khusus berikut: _-!” #`+*}, ./. Anda tidak dapat mengubah nama kondisi setelah Anda membuatnya.

Bagian dari permintaan untuk memfilter

Pilih bagian dari setiap permintaan web yang Anda ingin AWS WAF Classic untuk memeriksa kode SQL berbahaya:

Header

Header permintaan tertentu, misalnya, Referer header User-Agent atau. Jika Anda memilih Header, tentukan nama header di bidang Header.

Metode HTTP

Metode HTTP, yang menunjukkan jenis operasi yang diminta permintaan asal untuk dilakukan. CloudFront mendukung metode berikut:DELETE,GET,HEAD,OPTIONS,PATCH,POST, danPUT.

String kueri

Bagian dari URL yang muncul setelah ? karakter, jika ada.

catatan

Untuk kondisi kecocokan injeksi SQL, kami sarankan Anda memilih Semua parameter kueri (hanya nilai) alih-alih String kueri untuk Bagian dari permintaan untuk memfilter.

URI

Jalur URI permintaan, yang mengidentifikasi sumber daya, misalnya,/images/daily-ad.jpg. Ini tidak termasuk string kueri atau komponen fragmen URI. Untuk selengkapnya, lihat Uniform Resource Identifier (URI): Generic Syntax.

Kecuali Transformasi ditentukan, URI tidak dinormalisasi dan diperiksa sama seperti AWS menerimanya dari klien sebagai bagian dari permintaan. Transformasi akan memformat ulang URI seperti yang ditentukan.

Tubuh

Bagian dari permintaan yang berisi data tambahan yang ingin Anda kirim ke server web Anda sebagai badan permintaan HTTP, seperti data dari formulir.

catatan

Jika Anda memilih Body untuk nilai Bagian dari permintaan untuk difilter, AWS WAF Classic hanya memeriksa 8192 byte pertama (8 KB). Untuk mengizinkan atau memblokir permintaan yang badannya lebih panjang dari 8192 byte, Anda dapat membuat kondisi batasan ukuran. (AWS WAFKlasik mendapatkan panjang badan dari header permintaan.) Untuk informasi selengkapnya, lihat Bekerja dengan kondisi kendala ukuran.

Parameter kueri tunggal (hanya nilai)

Parameter apa pun yang telah Anda definisikan sebagai bagian dari string kueri. Misalnya, jika URL-nya adalah “www.xyz.com? UserName =abc& SalesRegion =seattle” Anda dapat menambahkan filter ke parameter atau. UserNameSalesRegion

Jika Anda memilih Parameter kueri tunggal (hanya nilai) Anda juga akan menentukan nama parameter Kueri. Ini adalah parameter dalam string kueri yang akan Anda periksa, seperti UserNameatau SalesRegion. Panjang maksimum untuk nama parameter Query adalah 30 karakter. Nama parameter kueri tidak peka huruf besar/kecil. Misalnya, Anda menentukan UserNamesebagai nama parameter Query, ini akan cocok dengan semua variasi UserName, seperti username dan UserName.

Semua parameter kueri (hanya nilai)

Mirip dengan Parameter kueri tunggal (hanya nilai), tetapi daripada memeriksa nilai parameter tunggal, AWS WAF Classic memeriksa nilai semua parameter dalam string kueri untuk kemungkinan kode SQL berbahaya. Misalnya, jika URL adalah “www.xyz.com? UserName =abc& SalesRegion =seattle,” dan Anda memilih Semua parameter kueri (hanya nilai), AWS WAF Classic akan memicu kecocokan jika nilai salah satu atau mengandung kode SQL berbahaya yang mungkin. UserNameSalesRegion

Header

Jika Anda memilih Header untuk Bagian dari permintaan untuk difilter, pilih header dari daftar header umum, atau masukkan nama header yang Anda ingin AWS WAF Classic untuk memeriksa kode SQL berbahaya.

Transformasi

Transformasi memformat ulang permintaan web sebelum AWS WAF Classic memeriksa permintaan. Ini menghilangkan beberapa format yang tidak biasa yang digunakan penyerang dalam permintaan web dalam upaya untuk melewati AWS WAF Classic.

Anda hanya dapat menentukan satu jenis transformasi teks.

Transformasi dapat melakukan operasi berikut:

Tidak ada

AWS WAFClassic tidak melakukan transformasi teks apa pun pada permintaan web sebelum memeriksanya agar string di Nilai cocok.

Mengkonversi ke lowercase

AWS WAFKlasik mengkonversi huruf besar (A-Z) ke huruf kecil (a-z).

Dekode HTML

AWS WAFKlasik menggantikan karakter yang dikodekan HTML dengan karakter yang tidak dikodekan:

  • Mengganti " dengan &

  • Mengganti   dengan ruang yang tidak pecah

  • Mengganti &lt; dengan <

  • Mengganti &gt; dengan >

  • Mengganti karakter yang diwakili dalam format heksadesimal, &#xhhhh;, dengan karakter yang sesuai

  • Mengganti karakter yang diwakili dalam format desimal, &#nnnn;, dengan karakter yang sesuai

Menormalkan ruang putih

AWS WAFKlasik menggantikan karakter berikut dengan karakter spasi (desimal 32):

  • \ f, formfeed, desimal 12

  • \ t, tab, desimal 9

  • \ n, baris baru, desimal 10

  • \ r, pengembalian pengangkutan, desimal 13

  • \ v, tab vertikal, desimal 11

  • spasi tanpa pindah baris, desimal 160

Selain itu, opsi ini menggantikan beberapa spasi dengan satu spasi.

Sederhanakan baris perintah

Untuk permintaan yang berisi perintah baris perintah sistem operasi, gunakan opsi ini untuk melakukan transformasi berikut:

  • Menghapus karakter berikut: \ " ' ^

  • Menghapus spasi sebelum karakter berikut: / (

  • Mengganti karakter berikut dengan spasi: , ;

  • Mengganti spasi ganda dengan satu spasi

  • Mengonversi huruf besar (A-Z) ke huruf kecil (a-z)

Dekode URL

Mendekode permintaan yang dikodekan URL.

Menambahkan dan menghapus filter dalam kondisi kecocokan injeksi SQL

Anda dapat menambahkan atau menghapus filter dalam kondisi kecocokan injeksi SQL. Untuk mengubah filter, tambahkan yang baru dan hapus yang lama.

Untuk menambah atau menghapus filter dalam kondisi kecocokan injeksi SQL
  1. Masuk ke AWS Management Console dan buka AWS WAF konsol di https://console.aws.amazon.com/wafv2/.

    Jika Anda melihat Beralih ke AWS WAF Klasik di panel navigasi, pilih.

  2. Di panel navigasi, pilih injeksi SQL.

  3. Pilih kondisi yang ingin Anda tambahkan atau hapus filter.

  4. Untuk menambahkan filter, lakukan langkah-langkah berikut:

    1. Pilih Tambahkan filter.

    2. Tentukan pengaturan filter yang berlaku. Untuk informasi selengkapnya, lihat Nilai yang Anda tentukan saat membuat atau mengedit kondisi kecocokan injeksi SQL.

    3. Pilih Tambahkan.

  5. Untuk menghapus filter, lakukan langkah-langkah berikut:

    1. Pilih filter yang ingin Anda hapus.

    2. Pilih Hapus filter.

Menghapus kondisi kecocokan injeksi SQL

Jika Anda ingin menghapus kondisi kecocokan injeksi SQL, Anda harus terlebih dahulu menghapus semua filter dalam kondisi dan menghapus kondisi dari semua aturan yang menggunakannya, seperti yang dijelaskan dalam prosedur berikut.

Untuk menghapus kondisi kecocokan injeksi SQL
  1. Masuk ke AWS Management Console dan buka AWS WAF konsol di https://console.aws.amazon.com/wafv2/.

    Jika Anda melihat Beralih ke AWS WAF Klasik di panel navigasi, pilih.

  2. Di panel navigasi, pilih injeksi SQL.

  3. Di panel kondisi kecocokan injeksi SQL, pilih kondisi kecocokan injeksi SQL yang ingin Anda hapus.

  4. Di panel kanan, pilih tab Aturan terkait.

    Jika daftar aturan yang menggunakan kondisi kecocokan injeksi SQL ini kosong, lanjutkan ke langkah 6. Jika daftar berisi aturan, catat aturan, dan lanjutkan dengan langkah 5.

  5. Untuk menghapus kondisi kecocokan injeksi SQL dari aturan yang menggunakannya, lakukan langkah-langkah berikut:

    1. Di panel navigasi, pilih Aturan.

    2. Pilih nama aturan yang menggunakan kondisi kecocokan injeksi SQL yang ingin Anda hapus.

    3. Di panel kanan, pilih kondisi kecocokan injeksi SQL yang ingin Anda hapus dari aturan, dan pilih Hapus kondisi yang dipilih.

    4. Ulangi langkah b dan c untuk semua aturan yang tersisa yang menggunakan kondisi kecocokan injeksi SQL yang ingin Anda hapus.

    5. Di panel navigasi, pilih injeksi SQL.

    6. Di panel kondisi kecocokan injeksi SQL, pilih kondisi kecocokan injeksi SQL yang ingin Anda hapus.

  6. Pilih Hapus untuk menghapus kondisi yang dipilih.