Санитарная обработка HTML затрудняет

Я читаю профили пользователей из базы данных и показываю их. Прежде чем я покажу им, я использую очистку HTML через php htmlentities. Это показывает их правильно. Но, позволяя пользователю редактировать его, он отображается как дважды отфильтрованный.

echo '<input id="about" name="about" value="'.$php_filtered_value>.'">';

Тогда внутри ввода амперсанд будет выглядеть &amp;Если я не фильтрую переменную, возникает беспокойство по поводу внедрения html.

Что я должен делать?

2 ответа

Я предпочитаю следовать правилу OWASP № 2:

>  RULE #2 - Attribute Escape Before Inserting Untrusted Data into HTML
Requirements:
-Aggressive HTML Entity Encoding
-Only place untrusted data into a whitelist of safe attributes (listed below).
-Strictly validate unsafe attributes such as background, id and name.

Пожалуйста, ознакомьтесь с XSS (межсайтовым скриптингом).

Не используйте двойной текст после этого (как в: один раз перед сохранением его в базе данных и еще раз перед его отображением).

  • Unescaped (что вы напечатали): Able & Baker
  • Побег один раз (что хранится в БД): Able &amp; Baker
  • Двойное экранирование (что заканчивается в вашем HTML): Able &amp;amp; Baker

Скорее, экранируйте текст только один раз: обычно на стороне вывода, а не на стороне ввода.

Другие вопросы по тегам