Rumah > Artikel > pembangunan bahagian belakang > Adakah mysql_real_escape_string() dan mysql_escape_string() Mencukupi untuk Keselamatan Apl?
Adakah mysql_real_escape_string() dan mysql_escape_string() Cukup Selamat untuk Aplikasi?
Pengenalan:
Mengekalkan keselamatan apl adalah penting dan keselamatan pangkalan data memainkan peranan penting. Walaupun mysql_real_escape_string() dan mysql_escape_string() biasanya digunakan untuk melindungi daripada suntikan SQL, kebimbangan timbul tentang keberkesanannya.Soalan:
Adakah mysql_real)_event dan mysql_escape_string() mencukupi untuk keselamatan apl?
Jawapan:
Tidak.
Kerentanan daripada mysql_real_escape_string() dan mysql_escape_string()
Fungsi ini tidak mencukupi untuk keselamatan aplikasi yang menyeluruh disebabkan oleh beberapa kelemahan keselamatan:SQL Injection:
$sql = "SELECT number FROM PhoneNumbers WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);Pertanyaan ini boleh dieksploitasi dengan memasukkan data berniat jahat, yang berpotensi membawa kepada akses pangkalan data yang tidak dibenarkan.
LIKE SQL Attacks:
$sql = "SELECT url FROM GrabbedURLs WHERE " . mysql_real_escape_string($field) . " LIKE '%s%%' LIMIT %s";Pertanyaan ini membenarkan penyerang mendapatkan semula semua rekod, menimbulkan risiko keselamatan.
Eksploitasi Charset:
Penyelesaian Disyorkan: Penyata Disediakan
Untuk menangani kelemahan ini, langkah keselamatan yang disyorkan ialah menggunakan kenyataan yang disediakan.Contoh:
$pdo = new PDO($dsn); $column = 'url'; $value = 'http://www.stackoverflow.com/'; $limit = 1; $statement = $pdo->prepare('SELECT url FROM GrabbedURLs WHERE ' . $column . '=? LIMIT ' . $limit); $statement->execute(array($value)); while (($data = $statement->fetch())) { }
Kesimpulan:
mysql_real_escape_string() dan mysql_escape_string() menyediakan perlindungan terhad terhadap tertentu Serangan suntikan SQL. Walau bagaimanapun, ia tidak mencukupi untuk melindungi aplikasi daripada pelbagai kelemahan lain. Pendekatan yang disyorkan ialah menggunakan pernyataan yang disediakan untuk memastikan keselamatan apl yang komprehensif.Atas ialah kandungan terperinci Adakah mysql_real_escape_string() dan mysql_escape_string() Mencukupi untuk Keselamatan Apl?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!