Должен ли я использовать ENT_QUOTES с htmlspecialchars или нет?

Я использую php 5.4.4, работающий как UTF-8, и я не уверен, что я правильно использую htmlspecialchars.

Мои строки / vars выглядят так:

$text = "<p><span class='clx'>By:</span> ".htmlspecialchars($foo)."</span></p>"; echo $text; 

Нужно ли мне использовать ENT_QUOTES или это необходимо только тогда, когда мне нужно что-то повторить

внутри, например: href="$foo" or id='$foo' ?

Atm, om только с использованием htmlspecialchars внутри закрытых тегов html, а не атрибутов.

Просто конкатенируйте var внутри строки в <p> теге </p>

благодаря

Обычно вы должны использовать его, беря данные из базы данных и вставляя их в элементы html. Это делается для того, чтобы цитаты из данных не закрывали котировки значений и не испортили html.

Короткий ответ: Всегда.

Длинный ответ: я настоятельно рекомендую читать OWASP в PHP Top 5 и PHP Cheat Sheet

Top 5 OWASP охватывает пять наиболее серьезных и распространенных уязвимостей безопасности, с которыми сталкивается PHP сегодня:

  • Удаленное выполнение кода
  • Межсайтовый скриптинг (XSS) [Один htmlspecialchars пытается предотвратить]
  • SQL-инъекция
  • Конфигурация PHP
  • Атаки файловой системы

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