PHP защищает себя от SQL-инъекций? - PullRequest
0 голосов
/ 15 марта 2009

Когда я отправляю ");-- из поля ввода на мой PHP-сервер localhost, он АВТОМАТИЧЕСКИ преобразует его в

\ "); -

Кажется, это здорово, за исключением того, что я не знаю, насколько заслуживает доверия это поведение. Хотя кажется, что он избегает SQL-инъекций, моя среда разработки не совпадает с производственной средой, и я боюсь, что в производственной среде не может быть автоматически активирована такая защита ...

Почему PHP делает это (конвертирует ввод без использования mysql_real_escape_string)? Всегда ли это или только с определенными расширениями? Безопасно ли полагаться на это поведение для предотвращения SQL-инъекций?

Ответы [ 4 ]

6 голосов
/ 15 марта 2009

Похоже, у вас включено Магические кавычки . Но вам лучше отключить эту опцию или отменить их. mysql_real_escape_string более безопасен.

1 голос
/ 15 марта 2009

Возможно, вы захотите поговорить с базой данных, используя слой абстракции, такой как Zend_Db . Например, если вы создаете оператор select путем создания экземпляра Zend_Db_Select, он будет выглядеть следующим образом:

//$_GET['thing'] is automatically escaped 
$select = $zdb->select()->from('things')->where('name = ?',$_GET['thing']);
$result = $zdb->fetchRow($select->__toString());//__toString generates a really pretty, vendor independent query

//a plain vanilla query would look like this:
$result = $zdb->fetchRow('select * from things where name = ?', $zdb->quote($_GET['thing']);
1 голос
/ 15 марта 2009

Эта «особенность» PHP известна как «магические кавычки». Какими бы «магическими» они ни были, их использование крайне плохая практика, так как они дают лишь ложное чувство безопасности. К счастью, они были удалены из PHP 6 (в разработке).

Более подробный список критических замечаний можно найти в этой статье Википедии .

В руководстве по PHP описаны различные способы отключения магических кавычек .

0 голосов
/ 17 марта 2009

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

Подробнее: http://ca3.php.net/magic_quotes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...