Zend Framework Filter, предотвращение инъекций SQL - PullRequest
0 голосов
/ 17 октября 2010

По некоторым важным причинам я не могу использовать стандартные методы, предоставляемые ZF, для предотвращения внедрения SQL. Я только что написал (и я использую его для каждого POST / GET-данных пользователя):

$filter = new Zend_Filter_PregReplace();
$filter->setMatchPattern(array("/[';`]/"))
       ->setReplacement(array(''));

Я использую только базу данных MySQL. Это достаточно? Это сейчас безопасно?

Ответы [ 2 ]

5 голосов
/ 17 октября 2010

Никогда не делайте такие вещи, используя регулярные выражения. Если вы не можете использовать методы базы данных Zend, используйте любые средства санитарии, которые предлагает вам библиотека базы данных. Для процедурной оболочки mySQL это будет mysql_real_escape_string () . Для PDO параметризованные запросы позаботятся об этом автоматически. И так далее.

Тем не менее, я действительно не понимаю, почему это необходимо в первую очередь. Почему вы не можете использовать то, что предлагает Framework? Могу поспорить, что есть лучший обходной путь, чем самостоятельно проводить санитарию.

1 голос
/ 17 октября 2010

Вы действительно должны использовать очистку, предоставляемую фреймворком - Zend (PDO, ORM).Если вы этого не сделаете, то, вероятно, что-то уже идет не так.

Существует так много случаев внедрения вредоносного кода, что, чтобы исключить все из них, вам придется найти / свернуть свою собственную структуру длябыть в безопасности.

...