Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi Terhadap Suntikan SQL?

Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi Terhadap Suntikan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 06:00:03873semak imbas

How do Parameterized Queries in PHP Protect Against SQL Injection?

Pertanyaan Berparameter dalam PHP dengan Sambungan MySQL

Dalam bidang pembangunan web, suntikan SQL menimbulkan ancaman keselamatan yang ketara. Dengan mencipta pertanyaan berniat jahat, penyerang boleh memintas mekanisme pengesahan dan mengakses data sensitif. Pertanyaan berparameter menawarkan penyelesaian yang mudah untuk kelemahan ini.

Mari kita pertimbangkan coretan kod daripada halaman log masuk PHP yang tidak dapat melindungi daripada suntikan SQL:

<code class="php">$userName = $_POST["username"];
$userPass = $_POST["password"];

$query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'";

$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);

if (!$row) {
    echo "No existing user or wrong password.";
}</code>

Untuk menggunakan pertanyaan berparameter, kita perlu mewujudkan sambungan ke pangkalan data dan menyediakan pernyataan berparameter. Kod berikut menyediakan contoh yang diubah suai:

<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($stmt, "s", $userName);
mysqli_stmt_bind_param($stmt, "s", $userPass);
mysqli_stmt_execute($stmt);
$row = mysqli_stmt_fetch($stmt);</code>

Berikut ialah pecahan kod:

  • mysqli_prepare() menyediakan pernyataan berparameter dengan ruang letak (?) mewakili parameter.Dalam pertanyaan berparameter ini, ruang letak menghalang suntikan input berniat jahat kerana ia digantikan dengan nilai terikat. Selain itu, adalah penting untuk menyulitkan atau mencincang kata laluan untuk keselamatan yang dipertingkatkan, mengelakkan penyimpanan kata laluan teks biasa. Dengan menggunakan pertanyaan berparameter, pembangun PHP boleh melindungi aplikasi web mereka dengan berkesan daripada serangan suntikan SQL.

Atas ialah kandungan terperinci Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi Terhadap 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