Bekerja dengan syarat 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 syarat kecocokan injeksi SQL

catatan

Ini adalahAWS WAFKlasikdokumentasi. Anda sebaiknya hanya menggunakan versi ini jika membuatAWS WAFsumber daya, seperti aturan dan ACL web, diAWS WAFsebelum November 2019, dan Anda belum memigrasikannya ke versi terbaru. Untuk memigrasi sumber daya Anda, lihatMigrasiAWS WAFSumber daya KlasikAWS WAF.

Untuk versi terbaruAWS 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 pencocokan injeksi SQL mengidentifikasi bagian dari permintaan web, seperti path URI atau string kueri, yang Anda inginkanAWS WAFKlasik untuk diperiksa. Kemudian dalam prosesnya, ketika Anda membuat ACL web, Anda menentukan apakah akan mengizinkan atau memblokir permintaan yang tampak berisi kode SQL berbahaya.

Membuat syarat kecocokan injeksi SQL

Bila Anda membuat kondisi pencocokan injeksi SQL, Anda menentukan filter, yang menunjukkan bagian dari permintaan web yang Anda inginkanAWS WAFKlasik untuk memeriksa kode SQL berbahaya, seperti URI atau string kueri. Anda dapat menambahkan lebih dari satu filter ke kondisi pencocokan injeksi SQL, atau Anda dapat membuat kondisi terpisah untuk setiap filter. Berikut bagaimana setiap konfigurasi memengaruhiAWS WAFPerilaku Klasik:

  • Lebih dari satu filter per kondisi kecocokan injeksi SQL (direkomendasikan)— Bila Anda menambahkan kondisi pencocokan injeksi SQL yang berisi beberapa filter ke aturan dan menambahkan aturan ke ACL web, permintaan web hanya perlu mencocokkan salah satu filter dalam kondisi pencocokan injeksi SQL untukAWS WAFKlasik untuk mengizinkan atau memblokir permintaan berdasarkan kondisi tersebut.

    Misalnya, misalkan Anda membuat satu kondisi pencocokan injeksi SQL, dan kondisinya berisi dua filter. Satu filter menginstruksikanAWS WAFKlasik untuk memeriksa URI untuk kode SQL berbahaya, dan instruksi lainnyaAWS WAFKlasik untuk memeriksa string kueri.AWS WAF Classic mengizinkan atau memblokir permintaan jika muncul berisi kode SQL berbahayabaikdi URIataudalam string kueri.

  • Satu filter per syarat kecocokan injeksi SQL— Bila Anda menambahkan kondisi pencocokan injeksi SQL terpisah ke aturan dan menambahkan aturan ke ACL web, permintaan web harus sesuai dengan semua kondisi untukAWS WAFKlasik untuk mengizinkan atau memblokir permintaan berdasarkan kondisi.

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

catatan

Ketika Anda menambahkan kondisi pencocokan injeksi SQL ke aturan, Anda juga dapat mengkonfigurasiAWS WAFKlasik untuk mengizinkan atau memblokir permintaan webtidaktampaknya berisi kode SQL berbahaya.

Untuk membuat syarat kecocokan injeksi SQL

  1. Masuk keAWS Management Consoledan membukaAWS WAFkonsolhttps://console.aws.amazon.com/wafv2/.

    Jika Anda melihatBeralih keAWS WAFKlasikdi panel navigasi, pilih Peran.

  2. Di panel navigasi, pilihInjeksi SQL.

  3. PilihBuat kondisi.

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

  5. PilihTambahkan filter lain.

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

  7. Setelah selesai menambahkan filter, pilihBuat.

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

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

Nama

Nama kondisi kecocokan injeksi SQL.

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

Bagian dari permintaan untuk menyaring

Pilih bagian dari setiap permintaan web yang Anda inginkanAWS WAFKlasik untuk memeriksa kode SQL berbahaya:

Header

Sebuah header permintaan yang ditentukan, misalnya,User-AgentatauRefererHeader. Jika Anda memilihHeader, tentukan nama header diHeaderbidang.

Metode HTTP

Metode HTTP, yang menunjukkan jenis operasi di mana permintaan meminta asal untuk melakukan. CloudFront mendukung metode berikut: DELETE, GET, HEAD, OPTIONS, PATCH, POST, dan PUT.

String kueri

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

catatan

Untuk kondisi kecocokan injeksi SQL, kami sarankan Anda memilihSemua parameter kueri (nilai saja)bukanString kueriuntukBagian dari permintaan untuk menyaring.

URI

Jalur URI permintaan, yang mengidentifikasi sumber daya, misalnya,/images/daily-ad.jpg. Ini tidak termasuk string kueri atau komponen fragmen URI. Untuk informasi, lihatUniform Resource Identifier (URI): Sintaks generik.

KecualiTransformasiditentukan, URI tidak dinormalisasi dan diperiksa sama sepertiAWSmenerimanya dari klien sebagai bagian dari permintaan. SEBUAHTransformasiakan memformat ulang URI seperti yang ditentukan.

body

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

catatan

Jika Anda memilihbodyuntuk nilai dariBagian dari permintaan untuk menyaring,AWS WAFKlasik memeriksa hanya 8192 byte pertama (8 KB). Untuk mengizinkan atau memblokir permintaan yang bodi lebih panjang dari 8192 byte, Anda dapat membuat kondisi kendala ukuran. (AWS WAFKlasik mendapatkan panjang tubuh dari header permintaan.) Untuk informasi selengkapnya, lihat Bekerja dengan kondisi kendala ukuran.

Parameter kueri tunggal (hanya nilai)

Setiap parameter yang telah Anda definisikan sebagai bagian dari string kueri. Misalnya, jika URL adalah “www.xyz. comuserName=ABC&salesRegion=Seattle" Anda dapat menambahkan filter ke salah satuUserNameatauSalesRegionparameter.

Jika Anda memilihParameter kueri tunggal (hanya nilai)Anda juga akan menentukanNama parameter kueri. Ini adalah parameter dalam string kueri yang akan Anda periksa, sepertiUserNameatauSalesRegion. Panjang maksimum untukNama parameter kueriadalah 30 karakter. Nama parameter kueritidak peka huruf besar/ kecil. Misalnya, Anda menentukanUserNamesebagaiNama parameter kueri, ini akan cocok dengan semua variasiUserName, sepertinama penggunadanUsERName.

Semua parameter kueri (nilai saja)

MiripParameter kueri tunggal (hanya nilai), tetapi daripada memeriksa nilai parameter tunggal,AWS WAFKlasik memeriksa nilai semua parameter dalam string kueri untuk kemungkinan kode SQL berbahaya. Misalnya, jika URL adalah “www.xyz. comuserName=ABC&salesRegion=Seattle,” dan Anda memilihSemua parameter kueri (nilai saja),AWS WAFClassic akan memicu kecocokan jika nilai salah satuUserNameatauSalesRegionmengandung kemungkinan kode SQL berbahaya.

Header

Jika Anda memilihHeaderuntukBagian dari permintaan untuk menyaring, pilih header dari daftar header umum, atau masukkan nama header yang Anda inginkanAWS WAFKlasik untuk memeriksa kode SQL berbahaya.

Transformasi

Transformasi memformat permintaan web sebelumnyaAWS WAFKlasik memeriksa permintaan. Ini menghilangkan beberapa pemformatan yang tidak biasa yang digunakan penyerang dalam permintaan web dalam upaya untuk melewatiAWS WAFKlasik.

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 untuk stringNilai untuk mencocokan.

Mengkonversi ke lowercase

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

Dekode HTML

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

  • Mengganti " dengan &

  • Menggantikan dengan spasi tanpa pindah baris

  • 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

ruang putih

AWS WAFKlasik mengganti 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 mengganti spasi ganda dengan satu spasi.

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)

mendekode URL

Decode permintaan URL-dikodekan.

Menambahkan dan menghapus filter dalam kondisi pencocokan injeksi SQL

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

Untuk menambah atau menghapus filter dalam kondisi pencocokan injeksi SQL

  1. Masuk keAWS Management Consoledan membukaAWS WAFkonsolhttps://console.aws.amazon.com/wafv2/.

    Jika Anda melihatBeralih keAWS WAFKlasikdi panel navigasi, pilih Peran.

  2. Di panel navigasi, pilihInjeksi SQL.

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

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

    1. PilihTambahkan filter.

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

    3. Pilih Tambahkan.

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

    1. Pilih filter yang ingin Anda hapus.

    2. PilihHapus filter.

Menghapus syarat kecocokan injeksi SQL

Jika Anda ingin menghapus kondisi pencocokan 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 syarat kecocokan injeksi SQL

  1. Masuk keAWS Management Consoledan membukaAWS WAFkonsolhttps://console.aws.amazon.com/wafv2/.

    Jika Anda melihatBeralih keAWS WAFKlasikdi panel navigasi, pilih Peran.

  2. Di panel navigasi, pilihInjeksi SQL.

  3. DiSyarat kecocokan injeksi SQLPilih syarat kecocokan injeksi SQL yang ingin Anda hapus.

  4. Di panel kanan, pilihAturan terkaittab.

    Jika daftar aturan menggunakan kondisi pencocokan injeksi SQL ini kosong, pergi ke langkah 6. Jika daftar berisi aturan apapun, membuat catatan aturan, dan lanjutkan dengan langkah 5.

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

    1. Di panel navigasi, pilih Aturan.

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

    3. Di panel kanan, pilih kondisi pencocokan injeksi SQL yang ingin Anda hapus dari aturan, lalu pilihHapus syarat yang dipilih.

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

    5. Di panel navigasi, pilihInjeksi SQL.

    6. DiSyarat kecocokan injeksi SQLPilih syarat kecocokan injeksi SQL yang ingin Anda hapus.

  6. PilihHapusuntuk menghapus kondisi yang dipilih.