Как защитить себя от атак XSS, одновременно отображая символы так, как их ожидают пользователи? - PullRequest
0 голосов
/ 10 июля 2019

Прямо сейчас я экранирую все пользовательские данные:

ERB::Util.html_escape_once("Netflix & Chill")
> "Netflix & Chill"

Теперь все мои опасения по поводу атаки XSS исчезли.Тем не менее, мои конечные пользователи не ожидают эту строку.

Как лучше защищать себя от атак XSS, но при этом отображать общие случаи использования амперсанда (&), а также все, что мы ожидаем в URL(/, ?, &, =)

У меня была одна гипотеза, что такие сайты, как stackoverflow.com, вероятно, .unescape закодировали символы после того, как они пробились квид.Но я не уверен, является ли это точной или обычной практикой.

1 Ответ

1 голос
/ 10 июля 2019

Можно использовать дезинфицирующее средство

text = %{
  <span class="text"> Netflix & Chill </span>
}
<%= sanitize text, tags: %w(span), attributes: %w(class) %>

Где разрешены теги HTML-теги и атрибуты разрешены атрибуты HTML-тегов.

...