Rumah >pangkalan data >tutorial mysql >Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi daripada Suntikan SQL dalam Pangkalan Data MySQL?

Bagaimanakah Pertanyaan Berparameter dalam PHP Melindungi daripada Suntikan SQL dalam Pangkalan Data MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 07:07:30403semak imbas

How can Parameterized Queries in PHP Protect against SQL Injection in MySQL Databases?

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:

  • mysqli_prepare menyediakan objek pernyataan PDO yang boleh dilaksanakan beberapa kali.
  • mysqli_stmt_bind_param mengikat input yang diberikan pengguna kepada pemegang tempat berparameter (?) dalam pertanyaan SQL, menghalang Suntikan SQL.
  • mysqli_stmt_execute melaksanakan pernyataan yang disediakan.
  • mysqli_stmt_fetch mendapatkan semula baris hasil.

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!

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