Rumah > Artikel > pangkalan data > Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi daripada Suntikan SQL dalam Pangkalan Data MySQL?
Pertanyaan Berparameter dalam PHP untuk Sambungan MySQL Selamat
Suntikan SQL kekal sebagai ancaman keselamatan berterusan yang boleh menjejaskan data sensitif dalam aplikasi pangkalan data. Pertanyaan berparameter ialah teknik penting untuk mengurangkan risiko ini. Walau bagaimanapun, melaksanakannya dengan betul memerlukan pemahaman bukan sahaja pertanyaan itu sendiri tetapi juga proses sambungan pangkalan data.
Pertimbangkan coretan kod berikut daripada halaman log masuk PHP:
<code class="php">$query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); $row = mysqli_fetch_array($result);</code>
Kod ini terdedah kepada Suntikan SQL kerana input yang diberikan pengguna $userName dan $userPass disertakan secara langsung dalam rentetan pertanyaan.
Untuk melaksanakan pertanyaan berparameter, gantikan kod ini dengan yang berikut:
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
Dalam ini kod yang dipertingkatkan:
Ingat untuk menyulitkan atau mencincang kata laluan pengguna untuk keselamatan tambahan. Pertanyaan berparameter bersama-sama dengan langkah tambahan ini memastikan interaksi pangkalan data MySQL selamat dalam aplikasi PHP anda.
Atas ialah kandungan terperinci Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi daripada Suntikan SQL dalam Pangkalan Data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!