Bolehkah Suntikan SQL Berlaku Melangkaui Permintaan POST dan GET?
Suntikan SQL mengeksploitasi kelemahan dalam aplikasi web yang tidak membersihkan input pengguna dengan secukupnya sebelum memasukkannya pertanyaan SQL. Walaupun kaedah POST dan GET adalah jalan biasa untuk serangan ini, suntikan SQL boleh berlaku melalui cara lain juga.
Dalam kod yang disediakan, mysql_real_escape_string digunakan untuk mengekod input pengguna, mengurangkan risiko suntikan SQL. Walau bagaimanapun, keselamatan kod sangat bergantung pada aplikasi pengekodan yang konsisten ini.
Memeriksa Kod Contoh
1. Kaedah POST
Contoh kod memulakan pembolehubah dengan input pengguna:
$name = trim($_POST['username']); $mail = trim($_POST['email']); $password = trim($_POST['password ']);
Sebelum menyimpan maklumat pengguna dalam pangkalan data, ia dikodkan dengan secukupnya:
$sql = "INSERT INTO clients SET name='" . mysql_real_escape_string($name) . "', mail='" . mysql_real_escape_string($mail) . "', password='" . mysql_real_escape_string(sha1($password)) . "'";
2. Kaedah GET
Pembolehubah dimulakan daripada URL:
$videoID = trim($_GET['videoID']); $userID = trim($_GET['userID']);
Sekali lagi, pertanyaan SQL menggunakan pengekodan yang sesuai:
$sql = "SELECT videoID FROM likes WHERE videoID = '" . mysql_real_escape_string($videoID) . "' AND UID = '" . mysql_real_escape_string($userID) . "' LIMIT 1";
Kesimpulan
Kod yang anda berikan tidak mengandungi kelemahan suntikan SQL, terima kasih kepada penggunaan mysql_real_escape_string yang konsisten untuk mengekod input pengguna. Adalah penting untuk ambil perhatian bahawa pengekodan mesti digunakan dengan bijak pada semua input pengguna tanpa mengira sumbernya. Untuk meningkatkan lagi keselamatan, pertimbangkan untuk menggunakan pendekatan yang lebih moden menggunakan PDO dengan pernyataan yang disediakan.
Atas ialah kandungan terperinci Bolehkah Suntikan SQL Melangkaui Permintaan POST dan DAPATKAN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!