Я знаю, что для предотвращения XSS нам нужно учитывать контекст.
когда мы делаем echo $ userinput; нам нужно знать о том факте, что если эти входные данные входят в значение текстового поля, или в значение текстовой области, или в область html деления и так далее.
Я бы хотел упростить бизнес эхо, чтобы я мог использовать одну функцию для большинства моих потребностей в эхо. Имея это в виду, я собрал следующую функцию, но я не уверен, стоит ли полагаться на нее.
Конечно, я сделал несколько предположений.
То есть я всегда использую встроенный urlencode для URL. И я религиозно разграничиваю атрибуты либо ', либо'.
Имея это в виду, могу ли я использовать указанное ниже безопасное эхо в отличие от простого эха для предотвращения XSS?
function safeecho($str)
{
return htmlentities($str, ENT_QUOTES, "UTF-8");
}
В одном я не уверен, это контекст <Style>
. Я видел, как люди говорили о проблеме «выражений» в таблицах стилей. Я не уверен, как это происходит, хотя. Но так как я не планирую выводить userinput в середине таблицы стилей или javascript, меня это не сильно волнует! Когда я обнаружил, что мне нужно вывести пользовательский ввод в области js или в таблице стилей, я не буду использовать эту функцию. Но я все еще заинтересован в ваших комментариях относительно того, как справляться с этим контекстом. Но, опять же, я , в основном , беспокоюсь об общих вещах, таких как HTML и объекты форм.
Суть вопроса в том, чтобы заставить utf8 и ent_quotes, я в безопасности?