2010-10-21 3 views
0

Я строю поисковую страницу, и я немного не уверен в том, что я должен делать с целью дезинфекции и проверки ввода пользователя.Проверка ввода пользователя (фильтры поиска)

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

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

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

Я не знаю, имеет значение, но некоторые фильтры прошли в querystrings - это массивы.

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

ответ

0

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

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

Никакого количества побегов лучше, чем это.

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

0

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)); 
Смежные вопросы