Я разрабатываю веб-сайт, и я пытаюсь защитить соединение.Защита от SQL-инъекции
Я использовал функцию addslashes
на $login
, чтобы остановить SQL-инъекцию, но некоторые друзья сказали мне, что недостаточно защиты. Однако они не показали мне, как использовать эту уязвимость.
Как я могу/нарушить этот код? Как я могу его защитить?
<?php
if (isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])))
{
extract($_POST);
$sql = "SELECT pseudo, sex, city, pwd FROM auth WHERE pseudo = '".addslashes($login)."'";
$req = mysql_query($sql) or die('Erreur SQL');
if (mysql_num_rows($req) > 0)
{
$data = mysql_fetch_assoc($req);
if ($password == $data['pwd'])
{
$loginOK = true;
}
}
}
?>
google addslashes VS mysql_real_escape_string: http://www.sitepoint.com/forums/showthread.php?t=337881 –
Есть много устаревших учебных пособий, которые предлагают 'addslashes()' как механизм для удаления вещей в SQL-запросы. Если вы учитесь на одном из них, я предлагаю вам попробовать найти что-то более актуальное и точное. Кроме того, 'extract ($ _ POST)' является хорошим примером уязвимости; не делай этого! BTW, добро пожаловать в StackOverflow. –
почти точный дубликат http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – Puddingfox