2012-03-09 84 views
6

在Rails應用程序中,用戶可以創建事件併發布URL以鏈接到外部事件站點。清理URL以防止Rails中的XSS

如何清理URL以防止XSS鏈接?

由於提前,XSS的

爲例,這是不是軌的sanitize方法

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

回答

1

您可以使用Rails的sanitize方法對一些基本的限制可以預防的。

或者您可以使用rgrove的sanitize創業板獲取更多選擇。

希望這會有所幫助。

+0

@url =的鏈接 「的javascript:警報( 'XSS')」 xss link不起作用。我應該反映我的問題,我已經測試了導軌的消毒方法。 – rickypai 2012-03-10 05:47:04

+1

如果您需要比內置Rails清理所提供的更多控制權,rgrove的清理寶石真的很不錯。無論哪種方式,就像Ben的回答指出的那樣,您需要清理整個鏈接的html,而不僅僅是URL本身。 – antinome 2013-11-06 16:40:22

5

嘗試消毒一次href是已經在類似這樣的標記:

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

這給了我:

<a>xss link</a> 
1

sanitize可在HTML字符串,而不是URL。意思是說,你不能淨化一個URL本身,但是你可以淨化一段與惡意網址有關聯的html。例如

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

這將清除所有已知的惡意屬性