Предотвращение XSS с PHP - PullRequest
1 голос
/ 10 марта 2011

Действительно ли предотвращение XSS означает, что я должен запускать htmlspecialchars () КАЖДЫЙ раз, когда я выводлю какой-либо пользовательский ввод?Например, каждый раз, когда я отображаю имя пользователя?Кажется очень утомительным.

Есть ли более простой способ?

Ответы [ 3 ]

3 голосов
/ 10 марта 2011

Если вы беспокоитесь о том, чтобы стать целью атаки, вы всегда должны следить за тем, чтобы формы отправлялись с вашего сайта, а не из внешнего источника. Вы можете использовать сессии: если значение в сессии, форма в порядке, в противном случае форма была отправлена ​​с помощью бота.

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

Это должно облегчить:

function h($string) {
    return htmlspecialchars($string);
}

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

Например. http://www.h2o -template.org /

0 голосов
/ 10 марта 2011

это также зависит от типа контента, который вы ожидаете. Например, если вы ожидаете только буквы, вы можете сделать

$input = preg_replace("/[^a-zA-Z]*/", "", $input);

или если вы ожидаете только цифры

$input = preg_replace("/[^0-9]*/", "", $input);

или если он смешанный и ожидаются другие символы, вам придется использовать

$input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
0 голосов
/ 10 марта 2011

Да, каждый раз.

Единственный более простой способ - использовать шаблон, который сделает это за вас.Сделай сам, или посмотри как XSLT или мой личный любимый PHPTAL

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