Brakeman 警告:即使在清理参数后,`link_to` href 中的参数值也不安全

问题描述

我的 html.haml 视图中有以下代码

= link_to params[:returnurl],class: "btn btn-secondary" do
    = fa_icon 'chevron-left',class: 'm-r-quarter',text: 'Cancel'

当我运行刹车时,我收到以下警告:

Confidence: High
Category: Cross-Site Scripting
Check: LinkToHref
Message: Unsafe parameter value in `link_to` href

即使使用 sanitize 如下所示,它仍然给我同样的警告:

= link_to sanitize(params[:returnurl]),text: 'Cancel'

我很困惑为什么我仍然收到它以及我将如何解决它。谢谢。

解决方法

使用传入的参数作为链接 href 的值来创建链接通常是不安全的。

想象一下,一个邪恶的代理可以发送一个链接到您的页面,其中 returnurl 参数指向一个网站,在那里他们可以从您的用户的详细信息中进行网络钓鱼,或者 returnurl 可以使用 javascript: 和然后将用户 cookie 数据传递到他们的服务器并劫持会话。

您需要重新考虑它的设计,以便不必将 returnurl 作为参数。理想情况下,您可以从其他一些信息中推断出来。将 url 存储在用户的会话中是一个混淆选项,但这仍然可以被利用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...