На views-view-fields--magazine--magazine.tpl.php
моем веб-сайте много таких шаблонов, как этот . как и когда я должен использовать filter_xss () и check_plain () для повышения безопасности? например, это код:
<div>
<div class="bf-header bf-article-header"><?php print $fields['title']->content; ?></div>
<div class="bf-article-body"><?php print $fields['field_magazine_body']->content;?></div>
<div class="bf-article-image"><?php print $fields['field_magazine_image']->content;?></div>
</div>
<div class="separator article-view-separator"></div>
Как я могу применить эти функции в нем?
filter_xss()
когда вы хотите отфильтровать XSS от потенциально опасного контента (то есть контента от ненадежного пользователя) иcheck_plain()
когда вы хотите экранировать специальные символы HTML из строкиОтветы:
Сначала прочитайте об этом в Drupal API:
Таким образом,
check_plain()
кодирует специальные символы, которые имеют особое значение в HTML (например,<
и&
), в простые текстовые объекты (то есть<
и&
соответственно), которые будут переводить их буквально (не интерпретировать как HTML), когда эта строка затем отображается как часть страницы с HTML-разметка. Функцияfilter_xss()
фильтрует строку HTML для предотвращения уязвимостей межсайтового скриптинга (XSS). Это делает четыре вещи:Обе функции используются для очистки данных от пользователей, чтобы убедиться, что любое внедрение пользователя нейтрализуется до того, как данные будут представлены на вашем сайте.
Вы никогда не пропустите одну и ту же строку через оба .
Если вы используете,
check_plain()
то строка, переданная функции, должна использоваться как обычный текст (не HTML). Тогдаfilter_xss()
не нужно, такcheck_plain()
как всегда будет делать строку простым текстом.Если вы используете
filter_xss()
, то строка, переданная функции, должна быть HTML, иcheck_plain()
это испортит ее.Когда я смотрю на шаблон, который вы используете в качестве примера, мне кажется, что все три передаваемых поля
print()
получены из содержимого, которое уже очищено и не нуждается в дополнительной очистке.Однако если вы создаете свой собственный модуль, который собирает пользовательский ввод, не пропуская его через «безопасный» текстовый фильтр, такой как «Фильтрованный HTML» или «Простой», вы должны использовать эти функции в целях санитарии.
источник
plain text