Прямо сейчас я экранирую все пользовательские данные:
ERB::Util.html_escape_once("Netflix & Chill")
> "Netflix & Chill"
Теперь все мои опасения по поводу атаки XSS исчезли.Тем не менее, мои конечные пользователи не ожидают эту строку.
Как лучше защищать себя от атак XSS, но при этом отображать общие случаи использования амперсанда (&), а также все, что мы ожидаем в URL(/
, ?
, &
, =
)
У меня была одна гипотеза, что такие сайты, как stackoverflow.com, вероятно, .unescape
закодировали символы после того, как они пробились квид.Но я не уверен, является ли это точной или обычной практикой.