популярные дырки, допускаемые разработчиками

Статус
В этой теме нельзя размещать новые ответы.

zaartix

Постоялец
Регистрация
15 Май 2006
Сообщения
73
Реакции
27
Читал на одном из сайтов, посвященных безопасности, про sql-инъекции. Так вот там говорилось о том, что даже addslashes можно обойти. Если кто вкурсе как это сделать и как от этого защититься - напишите плз.
 
zaartix написал(а):
Читал на одном из сайтов, посвященных безопасности, про sql-инъекции. Так вот там говорилось о том, что даже addslashes можно обойти. Если кто вкурсе как это сделать и как от этого защититься - напишите плз.
интересно а у кого-нибудь есть готовый класс mysql с защитой от иньекции?

пол сети обрыл ничего приличного не нашел
 
На веб-хак форуме тоже можно всякой инфы найти . За ссылки спасиб.
 
  • Заблокирован
  • #5
Читал на одном из сайтов, посвященных безопасности, про sql-инъекции. Так вот там говорилось о том, что даже addslashes можно обойти. Если кто вкурсе как это сделать и как от этого защититься - напишите плз.
А ссылку на этот сайт можно? лично я знаю, что если поступающие в запрос данные в кавычки не включаются, то стрипслешем ничего не решить. В противном случае он нормально работает.
 
mysql_escape_string - слеширует все опасные символы, по поводу класса я бы посоветовал людям забыть такой стиль как

mysql_query('SELECT * FROM users WHERE user_id ='.addslashes($userId);

вам всегда надо помнить о наличии addslashes, помнить о том чтобы не заслешировать дважды и при этом всем никто не даст гаранти что гдето случайно, по ошибке забыл заюзать.

Копайте параметризированные запросы, для PHP это PDO интерфейс (хотя можно написать и свой), если вкратце и схематично то запрос будет выглядет так

$stmt = $dbh->prepare("SELECT * FROM users WHERE user_id = ?");
$stmt->bindParam(1, $userId, PDO::pARAM_INT);
$stmt->execute();

теперь запрос безопасен вне зависимости от того что внутри $userId

преимущества такого подхода очевидны
- безопасное выполнение запросов
- логгирование уникальных запросов проекта (так как теперь вместо параметров только плейсхолдеры)
- лучшее восприятие запроса визуально
- удобный контроль над параметрами (тип, длина)
и другое..
 
При фильтрации параметров - нужно просто напросто понять какие значение будут передаваться и жестко фильтровать лишнее. Грубо говоря нужно действовать по правилу что не разрешено - запрещено.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху