在Rails應用程序中,用戶可以創建事件併發布URL以鏈接到外部事件站點。清理URL以防止Rails中的XSS
如何清理URL以防止XSS鏈接?
由於提前,XSS的
爲例,這是不是軌的sanitize方法
@url = "javascript:alert('XSS')"
<a href="<%=sanitize @url%>">test link</a>
在Rails應用程序中,用戶可以創建事件併發布URL以鏈接到外部事件站點。清理URL以防止Rails中的XSS
如何清理URL以防止XSS鏈接?
由於提前,XSS的
爲例,這是不是軌的sanitize方法
@url = "javascript:alert('XSS')"
<a href="<%=sanitize @url%>">test link</a>
嘗試消毒一次href是已經在類似這樣的標記:
url = "javascript:alert('XSS')"
sanitize link_to('xss link', url)
這給了我:
<a>xss link</a>
此漏洞已修復了自3.2.13,3.1.12,2.3。 18。
以下鏈接還提供了可用於早期版本的修補程序。
https://groups.google.com/forum/#!msg/rubyonrails-security/zAAU7vGTPvI/1vZDWXqBuXgJ
sanitize
可在HTML字符串,而不是URL。意思是說,你不能淨化一個URL本身,但是你可以淨化一段與惡意網址有關聯的html。例如
<%= sanitize "<a href='#{@url}'>Things</a>" %>
這將清除所有已知的惡意屬性
@url =的鏈接 「的javascript:警報( 'XSS')」 xss link不起作用。我應該反映我的問題,我已經測試了導軌的消毒方法。 – rickypai 2012-03-10 05:47:04
如果您需要比內置Rails清理所提供的更多控制權,rgrove的清理寶石真的很不錯。無論哪種方式,就像Ben的回答指出的那樣,您需要清理整個鏈接的html,而不僅僅是URL本身。 – antinome 2013-11-06 16:40:22