Но действительно ли мне нужны htmlentities на textarea? - PullRequest
4 голосов
/ 08 мая 2011

Я хотел бы знать, действительно ли необходимо экранировать мою строку с htmlentities ($ str, ENT_QUOTES, "UTF-8") перед печатью на текстовой области html.

Или автоматически этот один выход для менясимволы?

Ответы [ 2 ]

16 голосов
/ 08 мая 2011

Да, это необходимо.

В противном случае </textarea> во входных данных испортит вашу разметку.

<textarea> <--------------------------- Your tag

  </textarea> <------------------------ User input      
  <script>alert("Hello!");</script> <-- User input, XSS injection

</textarea> <-------------------------- Your tag
4 голосов
/ 08 мая 2011

Элемент textarea определен как содержащий PCDATA, поэтому теги внутри него не допускаются, а сущности по-прежнему декодируются.

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

Некоторые ошибки не будут исправлены (поскольку они не являются синтаксическими ошибками), например, когда вы хотите, чтобы данные были &lt; или </textarea>.

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

Короче говоря, да, необходимоэкранировать символы с особым значением.Однако, если вы правильно расшифровали кодировку, достаточно htmlspecialchars.

...