Санитарная обработка URL для предотвращения XSS в Rails - PullRequest
7 голосов
/ 09 марта 2012

В приложении rails пользователи могут создавать события и публиковать URL-адреса для ссылки на внешний сайт событий.

Как очистить URL-адреса для предотвращения ссылок XSS?

Заранее спасибо,

пример XSS, который невозможно предотвратить с помощью метода очистки рельсов

@url = "javascript:alert('XSS')"
<a href="<%=sanitize @url%>">test link</a>

Ответы [ 4 ]

5 голосов
/ 28 ноября 2012

Попробуйте выполнить дезинфекцию, когда href уже находится в теге вроде:

url = "javascript:alert('XSS')"
sanitize link_to('xss link', url)

Это дает мне:

<a>xss link</a>
2 голосов
/ 09 марта 2012

Вы можете использовать метод Rails ' sanitize для некоторых основных ограничений.

Или вы можете использовать rgrove's sanitize gem для дополнительных опций.

Надеюсь, это поможет.

1 голос
/ 06 декабря 2013

sanitize работает с HTML-строками, а не с URL-адресами. Это означает, что вы не можете очистить сам URL, но вы можете очистить фрагмент HTML, содержащий ссылку с вредоносным URL. например

<%= sanitize "<a href='#{@url}'>Things</a>" %>

Это очистит вашу ссылку от всех известных вредоносных атрибутов

0 голосов
/ 21 ноября 2013

Эта уязвимость исправлена ​​с 3.2.13, 3.1.12, 2.3.18.

Следующая ссылка также содержит патч, который можно использовать в более ранних версиях.

https://groups.google.com/forum/#!msg/rubyonrails-security/zAAU7vGTPvI/1vZDWXqBuXgJ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...