Кодирование значений $ _GET [] с помощью PHP, чтобы сделать их более безопасными - PullRequest
1 голос
/ 25 января 2010

С PHP, какую функцию лучше всего использовать со значениями $ _GET [], чтобы сделать их безопасными для браузера?

Я прочитал несколько htmlspecialchars () и htmlentities (). Следует ли использовать одну из них или есть другая функция, которая будет работать лучше?

Ответы [ 4 ]

4 голосов
/ 25 января 2010

Использование htmlspecialchars достаточно для кодирования специальных символов HTML. htmlentities необходимо, только если вы хотите использовать символы, которые не могут быть закодированы с использованием используемой вами кодировки символов.

Но обязательно укажите параметр quote_style , если хотите использовать выходные данные в значении атрибута, заключенном в одинарные кавычки, например:

echo "<input type='text' value='".htmlspecialchars($_GET['foobar'], ENT_QUOTES)."'>";

И указать параметр charset , когда вы используете кодировку символов, отличную от ISO 8859-1:

echo htmlspecialchars($_GET['foobar'], ENT_QUOTES, 'UTF-8');
2 голосов
/ 25 января 2010

Вы используете htmlspecialchars() для отображения $_GET переменных и urlencode() для их кодирования.

1 голос
/ 25 января 2010

htmlspecialchars () следует применять к каждой переменной $ _GET, которую вы выводите на свою страницу.

0 голосов
/ 25 января 2010

Если вы делаете это только ради безопасности (удаляя и т. Д.), А не потому, что вам нужно убедиться, что символы закодированы правильно (хотя это, безусловно, может быть проблемой), возможно, стоит посмотреть strip_tags , которая полностью удаляет теги, а не просто кодирует символы <и>. В некоторых случаях это немного лучше - привет станет просто "привет", а не будет преобразовывать теги, чтобы они стали видимыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...