В моей регистрационной форме у меня есть четыре входа:
username password email address web address
Невозможно определить, какой из всех доступных методов санитации действительно необходим:
strip_tags() substr() mysql_real_escape_string() trim() htmlentities() addslashes() . . . (you may add more)
Где-то я обнаружил, что функция must have
, где-то эта функция объявлена как deprecated
или less valuable the another one ...
Может ли кто-нибудь быть таким добрым, чтобы создать список приоритетов для всех четырех входов выше.
Примечание. PDO - prepared statements
, уже используются для связи с базой данных.
Сначала вам нужно четко про шляпу для вас, как для дезинфекции.
Поскольку вы используете готовые инструкции allready, нет необходимости: mysql_real_escape_string ()
Если вы хотите запретить пользователям использовать html, чтобы избежать XSS, вы должны использовать strip_tags ()
Чтобы защитить ваш html-дисплей снова, не печатаемые символы htmlentities () Но во времена UTF-8 его немного устаревает.
Для ввода пароля его можно использовать trim (), потому что он помогает, если вы копируете пароли с ведущим / прикрепленным пространством. Потому что перспективы добавляют пробелы. Но не все думают, что это хорошая идея, чтобы обрезать пароли.
Зависит от вашей системы Templating, это может быть хорошей идеей использовать addslashes () для предварительно определенных входных значений, таких как
<input type="text" value="<?php addslashes($value); ?>" />
потому что это можно сделать:
my value " /><script>evil things</script><
Чтобы иметь какой-то XSS в автозаполненных формах.
В нескольких словах:
Когда вы добавляете свои данные в базу данных – используйте подготовленные заявления PDO с заполнителями. Вот и все, больше ничего не требуется.
Когда вы htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
что-то из любой точки html-страницы, вам нужно выполнить htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
, где $string
– строка, которую вы хотите вывести «безопасным» способом.