问题描述
我的 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 存储在用户的会话中是一个混淆选项,但这仍然可以被利用。