Rumah >pangkalan data >tutorial mysql >Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi Terhadap Suntikan SQL?
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:
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!