【问题标题】:XSS Unsafe parameter value in link_tolink_to 中的 XSS Unsafe 参数值
【发布时间】:2016-04-24 08:43:18
【问题描述】:

代码气候在其中一个 html.haml 中的这行代码上给我一个“跨站点脚本”错误:

= link_to 'Next', @redirect_uri, data: { no_turbolink: true }, class: 'btn btn-primary'

在控制器中,@redirect_uri 是:

@redirect_uri = params[:redirect_uri] << "&show_more_pages=false"

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

到底出了什么问题,我怎样才能让 Code Climate 开心?

【问题讨论】:

    标签: ruby ruby-on-rails-4 xss


    【解决方案1】:

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

    用这样的链接试试吧:

    http://your.web.site/?redirect_uri=alert('Boom');
    

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

    【讨论】:

    • 清除“数据:{ no_turbolink: true }”的条带。我需要在此链接上禁用 turbolink。
    • sanitize 接受一组允许的属性(有关详细信息,请参阅文档)。如果您在其中添加 data,它应该不会影响您的 turbolink 配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2016-01-20
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多