link_to 中的 XSS 不安全参数值

Gun*_*ter 4 ruby xss ruby-on-rails-4

Code Climate 在 html.haml 之一的这行代码上给了我一个“跨站脚本”错误:

= link_to 'Next', @redirect_uri, data: { no_turbolink: true }, class: 'btn btn-primary'
Run Code Online (Sandbox Code Playgroud)

在控制器中,@redirect_uri 是:

@redirect_uri = params[:redirect_uri] << "&show_more_pages=false"
Run Code Online (Sandbox Code Playgroud)

params[:redirect_uri] 是一个非常长的 url,其中包含重定向 uri。

究竟出了什么问题,我怎样才能让 Code Climate 满意?

Kri*_*ján 5

Code Climate 正在抱怨,因为您正在将潜在的用户提供的内容嵌入redirect_uri到您的页面中。该 URI 可能是 JavaScript,它将在用户单击链接时执行。因为用户单击页面呈现的链接,JS 就可以访问该页面,就像您自己编写代码一样,因此狡猾的人可以窃取您只希望用户和服务器有权访问的各种信息。

使用如下链接尝试一下:

http://your.web.site/?redirect_uri=alert('Boom');
Run Code Online (Sandbox Code Playgroud)

由于您在 Rails 中,因此您可以访问sanitize,它会为您清除 URL 中的邪恶部分,并且我希望代码气候会安静下来。还有一些可能有帮助的问题: