2012-03-09 74 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>" %> 

这将清除所有已知的恶意属性