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.
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.
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.
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:
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!