простой вопрос по очистке PHP $ _GET - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть ссылка для редактирования записи, которая получает 7-символьную буквенно-цифровую текстовую строку, которая всегда имеет структуру ZZZZ111, а затем используется в запросе MySQL для извлечения всех связанных данных для этого идентификатора записи.

Является ли mysql_real_escape_string() всем, что мне нужно для очистки этого $_GET['id']? Или есть еще шаги для защиты моей базы данных?

Ответы [ 5 ]

6 голосов
/ 07 декабря 2009

mysql_real_escape_string() позволит избежать любых вредоносных символов. Кроме того, вы можете использовать регулярное выражение типа /^[A-Za-z]{4}\d{3}$/, чтобы убедиться, что пользователь действительно ввел правильный ввод.

2 голосов
/ 07 декабря 2009

Если вы планируете показывать свои данные пользователям, вы также хотели бы удалить все теги HTML. Может быть, кто-то вставил вредоносный javascript в запись гостевой книги, например?

это можно сделать с помощью http://php.net/manual/en/function.htmlentities.php

Или вы можете использовать класс inputfilter, чтобы разрешить определенные теги и т. Д. Я нашел это очень полезным http://www.phpclasses.org/browse/package/2189.html

2 голосов
/ 07 декабря 2009

Чтобы сделать ввод безопасным для SQL-запроса, mysql_real_escape_string() должно быть достаточно, хотя я предлагаю переключиться на PDO и подготовленные операторы . Они, как правило, немного приятнее в использовании и немного более эффективны (оператор анализируется только один раз, и запрос можно использовать повторно).

Однако вы также должны убедиться, что ваши страницы защищены от межсайтового скриптинга путем (например) фильтрации HTML из полей на основе белого списка.

1 голос
/ 07 декабря 2009

mysql_real_escape_string () - хорошее начало, и я согласен, что использование подготовленных операторов было бы довольно хорошим выбором. Zend_Db хорошо, если вы хотите изучить некоторую абстракцию БД, которая может упростить работу с PDO.

Я бы также использовал это как возможность написать своего рода валидатор RegEx для вашего ввода. Вот пример регулярного выражения, с которого можно начать:

[A-Z]{4}[0-9]{3}

Более подробную информацию о PHP и регулярных выражениях можно найти здесь: http://www.regular -expressions.info / php.html

0 голосов
/ 07 декабря 2009

mysql_real_escape_string должен выполнить работу за $_GET['id']. Также взгляните на подготовленные заявления через PDO .

...