Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara berkesan untuk mencegah serangan suntikan PHP

Cara berkesan untuk mencegah serangan suntikan PHP

WBOY
WBOYasal
2024-05-01 17:48:021118semak imbas

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.

预防 PHP 注入攻击的有效方法

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!

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