Rumah > Artikel > pembangunan bahagian belakang > Cara berkesan untuk mencegah serangan suntikan PHP
Kaedah untuk mencegah serangan suntikan PHP termasuk: Gunakan pertanyaan berparameter untuk menghalang suntikan SQL. Gunakan fungsi input penapis untuk menapis nilai yang diluluskan. Gunakan fungsi mysqli_real_escape_string() untuk melepaskan aksara khas. Gunakan pengesahan senarai putih dan senarai hitam untuk menapis aksara atau corak berbahaya.
Cara berkesan untuk mencegah serangan suntikan PHP
Serangan suntikan PHP ialah sejenis serangan yang mengeksploitasi kelemahan dalam aplikasi PHP untuk memasukkan pertanyaan SQL yang berniat jahat. Serangan sedemikian boleh menyebabkan kebocoran data, kerosakan pangkalan data, atau bahkan pengambilalihan sistem.
Kaedah pencegahan
1. Pertanyaan berparameter
Menggunakan pertanyaan berparameter boleh menghalang serangan suntikan SQL. Teknik ini menggunakan ruang letak (?) untuk menggantikan nilai sebenar dalam pertanyaan SQL dan menghantar nilai kepada MySQL sebelum melaksanakan pertanyaan.
Contoh kod:
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username);
2. Gunakan fungsi penapis
untuk menapis input untuk mengelakkan serangan suntikan. Nilai masuk boleh ditapis menggunakan fungsi filter_input()
PHP. . filter_input()
函数过滤传入的值。
示例代码:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
3. 转义特殊字符
可以使用 mysqli_real_escape_string()
Contoh kod:
$username = mysqli_real_escape_string($conn, $username);
4. Gunakan pengesahan senarai putih dan senarai hitam
Pengesahan senarai putih dan senarai hitam boleh menapis aksara atau corak yang berbahaya.Contoh kod:
// 白名单 $allowed_chars = ['a', 'b', 'c']; if (!in_array($char, $allowed_chars)) { // 输出错误消息 } // 黑名单 $banned_chars = ['<', '>', '"', '\'']; if (preg_match('/[' . implode('', $banned_chars) . ']/', $input)) { // 输出错误消息 }
Contoh praktikal
Berikut ialah contoh kod yang menunjukkan cara menggunakan pertanyaan berparameter dan fungsi penapis untuk mengelakkan serangan suntikan:// 获取用户输入 $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING); // 准备和执行查询 $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute();
🎜🎜 anda membuat kesimpulan boleh Melindungi aplikasi PHP anda daripada serangan suntikan. 🎜
Atas ialah kandungan terperinci Cara berkesan untuk mencegah serangan suntikan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!