Rumah >pembangunan bahagian belakang >tutorial php >Penapisan bentuk PHP: pencegahan dan penapisan suntikan SQL

Penapisan bentuk PHP: pencegahan dan penapisan suntikan SQL

WBOY
WBOYasal
2023-08-07 15:49:442395semak imbas

Penapisan bentuk PHP: pencegahan dan penapisan suntikan SQL

Penapisan Borang PHP: Pencegahan dan Penapisan Injeksi SQL

Pengenalan:

Dengan perkembangan pesat Internet, pembangunan aplikasi web telah menjadi semakin biasa. Dalam pembangunan web, borang adalah salah satu cara interaksi pengguna yang paling biasa. Walau bagaimanapun, terdapat risiko keselamatan dalam pemprosesan data penyerahan borang. Antaranya, salah satu risiko yang paling biasa ialah serangan suntikan SQL.

Serangan suntikan SQL ialah kaedah serangan yang menggunakan aplikasi web untuk memproses data input pengguna secara tidak betul, membolehkan penyerang melakukan pertanyaan pangkalan data yang tidak dibenarkan. Dengan menyuntik kod SQL berniat jahat ke dalam kotak input, penyerang boleh mendapatkan, mengubah suai, memadam atau bahkan memusnahkan data dalam pangkalan data.

Untuk mengelakkan serangan suntikan SQL, kami perlu menapis dan memproses data input pengguna dengan betul. Di bawah, kami akan memperkenalkan beberapa kaedah penapisan bentuk PHP yang biasa digunakan dan memberikan contoh kod yang sepadan.

  1. Penapisan rentetan

Penapisan rentetan ialah salah satu kaedah penapisan bentuk yang paling biasa. Dengan menggunakan fungsi terbina dalam PHP atau ungkapan biasa, kami boleh menapis beberapa aksara dan kata kunci khas untuk menghalang pengguna daripada memasukkan kod hasad.

1.1 Penapisan rentetan menggunakan fungsi terbina dalam PHP

Kod sampel:

$name = $_POST['name'];
$filtered_name = filter_var($name, FILTER_SANITIZE_STRING);

Dalam contoh di atas, kami menapis nama yang dimasukkan oleh pengguna melalui fungsi filter_var dan pilihan FILTER_SANITIZE_STRING. Pilihan ini akan menapis aksara khas dalam rentetan asal.

1.2 Menggunakan ungkapan biasa untuk penapisan rentetan

Kod contoh:

$email = $_POST['email'];
$filtered_email = preg_replace('/[^a-zA-Z0-9@.]/', '', $email);

Dalam contoh di atas, kami menggunakan fungsi preg_replace dan ungkapan biasa untuk menggantikan aksara kecuali huruf besar dan huruf kecil, nombor, @ dan rentetan kosong. Dengan cara ini, kami boleh menapis beberapa aksara khas untuk memastikan alamat e-mel yang dimasukkan oleh pengguna adalah sah.

  1. Penapisan nombor

Penapisan digital digunakan untuk menapis data berangka yang dimasukkan oleh pengguna untuk memastikan kesahihannya.

2.1 Penapisan berangka menggunakan fungsi terbina dalam PHP

Kod contoh:

$age = $_POST['age'];
$filtered_age = filter_var($age, FILTER_SANITIZE_NUMBER_INT);

Dalam contoh di atas, kami menapis umur yang dimasukkan oleh pengguna menggunakan fungsi filter_var dan pilihan FILTER_SANITIZE_NUMBER_INT. Pilihan ini akan menapis aksara bukan angka daripada nilai asal.

2.2 Penapisan nombor menggunakan ungkapan biasa

Kod contoh:

$price = $_POST['price'];
$filtered_price = preg_replace('/[^0-9.]/', '', $price);

Dalam contoh di atas, kami menggunakan fungsi preg_replace dan ungkapan biasa untuk menggantikan aksara kecuali nombor dan rentetan kosong. Dengan cara ini, kami boleh menapis beberapa aksara khas dan memastikan harga yang dimasukkan oleh pengguna adalah sah.

  1. SQL injection prevention

Selain menapis data yang dimasukkan oleh pengguna, kami juga perlu mengambil beberapa langkah keselamatan untuk mengelakkan serangan suntikan SQL.

3.1 Menggunakan pernyataan yang disediakan

Kod sampel:

$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password');
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

Dalam contoh di atas, kami menggunakan pernyataan PDO yang disediakan untuk melaksanakan pertanyaan pangkalan data. Dengan menggunakan parameter pengikatan, kami boleh mengelakkan penyambungan terus data yang dimasukkan pengguna dalam pertanyaan, dengan itu berkesan menghalang serangan suntikan SQL.

Kesimpulan:

Dalam pembangunan web, borang ialah cara interaksi pengguna yang sangat penting. Walau bagaimanapun, semasa pemprosesan data borang, kita mesti berhati-hati untuk mengawal serangan suntikan SQL. Melalui penapisan data yang munasabah dan penggunaan pernyataan yang disediakan, kami boleh memastikan bahawa data yang dimasukkan oleh pengguna adalah sah dan berkesan menghalang serangan suntikan SQL. Saya harap artikel ini dapat membantu anda memahami penapisan borang PHP dan pencegahan suntikan SQL.

Rujukan:

  1. PHP: filter_var - Manual (n.d.). ). SQL_Injection

Atas ialah kandungan terperinci Penapisan bentuk PHP: pencegahan dan penapisan suntikan SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn