Rumah >pangkalan data >tutorial mysql >Bagaimanakah Pertanyaan Berparameter Melindungi Terhadap Suntikan SQL?
Menggunakan Pertanyaan Berparameter untuk Interaksi Pangkalan Data Selamat
Suntikan SQL kekal sebagai ancaman keselamatan yang ketara, membenarkan penyerang melaksanakan pertanyaan berniat jahat menggunakan input yang diserahkan pengguna . Untuk melindungi tapak web anda, pertanyaan berparameter menawarkan penyelesaian yang mantap. Walau bagaimanapun, menyepadukannya memerlukan pengendalian sambungan pangkalan data yang betul.
Pertimbangkan contoh kod halaman log masuk ini:
<code class="php">$userName = $_POST["username"]; $userPass = $_POST["password"]; $query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); //$dbc is for MySQL connection: $dbc = @mysqli_connect($dbhost, $dbuser, $dbpass, $db) $row = mysqli_fetch_array($result); if(!$row){ echo "No existing user or wrong password."; }</code>
Melaksanakan Pertanyaan Berparameter:
Untuk mengelakkan Suntikan SQL, gantikan kod ini dengan:
<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>
Pengendalian Sambungan:
Dalam kod asal, sambungan ke pangkalan data diwujudkan menggunakan mysqli_connect(). Ini perlu dilakukan sebelum melaksanakan sebarang pertanyaan. Pastikan anda mempunyai $dbc yang sah sebelum meneruskan.
Amalan Terbaik Keselamatan:
Atas ialah kandungan terperinci Bagaimanakah Pertanyaan Berparameter Melindungi Terhadap Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!