2010-01-06 2 views
0

Is mysql_real_escape_string() с sprintf необходимо только на странице входа или в каждом mysql_query после входа в систему, для предотвращения SQL-инъекции?Когда требуется mysql_real_escape_string()?

+2

Пожалуйста, не используйте функции 'mysql_ *' для нового кода. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://goo.gl/KJveJ). См. [** красное поле **] (http://goo.gl/GPmFd)? Вместо этого вы должны узнать о [подготовленных утверждениях] (http://goo.gl/vn8zQ) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/ MySQLi). Если вы не можете решить, [эта статья] (http://goo.gl/3gqF9) поможет выбрать. Если вы хотите узнать, [это хороший учебник PDO] (http://goo.gl/vFWnC). –

ответ

5

Вы должны использовать mysql_real_escape_string для любых предоставленных пользователем данных, которые будут запущены через SQL-запрос.

+2

Скорее всего, вы не должны использовать 'mysql_ *' вообще. –

+0

Это правда на сегодняшний день, не так много два года назад. : D – JadziaMD

6

Вы должны использовать mysql_real_escape_string() каждый раз, когда вы вставляете пользовательские данные в запрос или используете обертку базы данных, такую ​​как PDO, которая может выполнять подготовленные операторы. Это было бы лучше, потому что они выполняют дезинфекцию для вас.

Если вы работаете над общей безопасностью своего сайта, это здорово и определенно необходимо. Если вы ищете причины, по которым ваш сайт был взломан, я сомневаюсь, что это было сделано с помощью SQL-инъекции, поскольку ваш фактический HTML-код был затронут (или, как я думал, я могу ошибаться). Это было бы возможно только в том случае, если ваш FTP-пароль хранился где-то в базе данных.

3

Используйте его, если вы не доверяете вводам. И никогда не доверяют пользователю.

-1

В любого экземпляра, принимать пользовательский ввод, вы должны использовать mysqli_real_escape_string на него, прежде чем отправить его в базу данных. Также полезно использовать trim() на входе.

+0

Я считаю, что -1 был для рекомендации mysql_real_escape_string. Исправлена –

Смежные вопросы