Что делают htmlentities с ENT_QUOTES и UTF-8?
Я всегда использовал простой htmlentities($_POST['string']);
очистить данные для любых атак XSS. Недавно я видел, как люди используют это:
htmlentities($_POST['string'], ENT_QUOTES, 'UTF-8');
В чем преимущество или цель использования этого по сравнению с просто htmlentities()
,
Также не знаю, уместно ли это, но я использую мета UTF-8 всегда вверху своих страниц.
1 ответ
ENT_QUOTES
необходим, если данные подставляются в атрибут HTML, например
echo '<input type="text" value="' . htmlentities($string, ENT_QUOTES) . '">";
Это гарантирует, что кавычки закодированы, поэтому они не завершают value="..."
атрибут преждевременно.
UTF-8
необходимо, если ваша страница использует кодировку UTF-8, поскольку по умолчанию используется кодировка ISO-8859-1. Эти кодировки должны совпадать, иначе пользователь увидит странные символы.
Причина, по которой люди указывают кодировку символов и кавычки, заключается в том, что
the encapsulation characters ' and " are encoded (ENT_QUOTES)
and 'UTF-8' encoding flag expressed as:
htmlentities($_POST['string'], ENT_QUOTES, $encoding="UTF-8");
or
htmlentities($_POST['string'], ENT_QUOTES, "UTF-8");
во всем заявлении.
Основная причина для выражения кодировки символов в фильтре - поддерживать ссылку на кадр входных данных. Если кодировка передачи изменилась из-за помех передачи или злонамеренного изменения пакета передачи, фильтр заполняет недостающие данные нулями.