Достаточно ли check_plain () для повторного отображения текста, введенного пользователями в браузере, или мне все равно следует фильтровать с помощью filter_xss () ?
Достаточно ли check_plain () для повторного отображения текста, введенного пользователями в браузере, или мне все равно следует фильтровать с помощью filter_xss () ?
Я полагаю, что вопрос об использовании check_plain(filter_xss($string))
или filter_xss(check_plain($string))
.
check_plain()
и filter_xss()
имеют две разные и, напротив, цели:
check_plain()
кодирует специальные символы в виде простой текстовой строки, которая затем отображается в виде HTML.filter_xss()
фильтрует строку HTML для предотвращения уязвимостей межсайтового скриптинга (XSS). В частности, его целью является:
Если вы используете check_plain()
, строка, переданная функции, должна использоваться как простой текст; в таком случае filter_xss()
не нужно. Если вы используете filter_xss()
, то строка, передаваемая функции, должна быть HTML и check_plain()
не обязательна.
Если речь идет об использовании check_plain()
и filter_xss()
в разных частях одной и той же строки, то, как указал григгл в своем комментарии, вы можете использовать (например) check_plain()
содержимое атрибутов тега и filter_xss()
весь тег HTML.