Проверка ввода пользователя (поисковые фильтры) - PullRequest
0 голосов
/ 21 октября 2010

Я создаю страницу поиска, и я немного не уверен, что мне следует делать в отношении очистки и проверки пользовательского ввода.

На странице поиска есть фильтры, которые передаются через строки запросов. (некоторые передаются от входов, а другие - от ссылок с чекбоксом / радио-подобным поведением)

На что мне обращать внимание в этой ситуации? Могу ли я быть в безопасности, используя только preg_replace (раздеть все, кроме) и бежать?

Кроме того, нужно ли мне что-либо делать со строками запросов (с помощью пользовательского ввода), прежде чем помещать их в ссылки? Должен ли я добавить еще один запрос для получения возможных значений, циклически просмотреть результаты и исключить те пользовательские данные, которые не найдены? (не позволяя ссылкам добавлять фиктивную опцию фильтра, которую мог вставить пользователь. Хотя это не повлияет на пользователя с измененным URL-адресом?)

Я не знаю, имеет ли это значение, но некоторые фильтры, переданные в строках запроса, являются массивами.

Что ты думаешь? Я довольно новичок в этом, и я ценю помощь. Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 октября 2010

PHP поставляется с функциями, специально предназначенными для очистки строк для использования в запросе MySQL.

Если вы используете (устаревшую) функцию PHP mysql_query() для выдачи запросов к базе данных, взгляните на функцию PHP mysql_real_escape_string.

$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
        mysql_real_escape_string($user),
        mysql_real_escape_string($password));
0 голосов
/ 21 октября 2010

Из вашего вопроса неясно, что вы пытаетесь защитить, но обычная проблема с очисткой входных данных - это база данных.

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

Нет лучшего выхода, чем это.

Что касается санации самой строки запроса, спросите себя: если злоумышленник создал URL вручнуюможет ли случиться что-то плохое?Или они просто получат страницу с ошибкой?

...