Rails 中的 XSS 漏洞(合并参数)



我最近发现(感谢一个漏洞赏金用户(我的网站有XSS漏洞。经过一番尝试,我发现原因是导航栏中的区域设置开关,例如:

<%= link_to "日本語",  params.merge(locale: "ja", only_path: true), target:"_self", onClick:"ga('send','event','Navbar','Link Clicked','Language setting ja');" %>

这允许自由注入恶意代码,但我一生都无法在不破坏区域设置开关或创建替代问题的情况下解决它。

我已经在这里检查了其他与XSS相关的帖子,但我认为这个问题甚至超出了我的理解能力,更不用说现在修复了。如果有人对如何防止此XSS问题有任何建议,我将不胜感激,因为它已经变得非常紧张!

答案最终非常简单,所以我将在这里发布,以防其他人搜索类似的问题。

根据 http://guides.rubyonrails.org/i18n.html#setup-the-rails-application-for-internationalization 我首先将其添加到application_controller.rb文件中:

def default_url_options(options={})
  { locale: I18n.locale }
end

有了它,我可以简单地删除大部分原始(易受攻击的(语言环境切换,现在有:

<li><%= link_to "日本語", locale: "ja" %></li>

漏洞已删除,但功能保留。真的就是这么简单。处理遗留代码有时会很痛苦,谢天谢地,这并不像我最初假设的那么复杂。

最新更新