繁体   English   中英

如何修复刹车员生成的导轨中的跨站点脚本安全警告?

[英]How to fix Cross Site Scripting security warning in rails generated by brakeman?

我使用了brakeman 在我的应用程序中生成扫描报告。 它以高可信度生成了许多跨站点脚本安全警告。 其中之一是:

Unescaped parameter value rendered inline near line 47: render(text => "Unexpected EventType #{params["EventType"]}", { :status => 406 })
app/controllers/event_controller.rb.

在下面显示的控制器方法中,第一行显示了上述警告。

我在链接中看到过,但无法修复。 请帮忙。 这是控制器代码:

  def purchase

    render :status => 406, :text => "Unexpected EventType #{params['EventType']}" and return unless params['EventType'] == 'purchased'
    @account = Account.new
    render :status => 406, :text => "Could not find Plan #{params['Plan']}" and return unless @account.plan = @plan = SubscriptionPlan.find_by_name(params['Plan'])

  end

当使用render :text => ... Rails 仍然将输出呈现为 HTML(内容类型为text/html )。 由于您的代码将用户输入( params['EventType'] )直接放在输出中,这是一个典型的跨站点脚本漏洞。

你有两个选择。 使用render :plain代替(它将使用内容类型text/plain而不是 HTML 呈现):

render :status => 406, :plain => "Unexpected EventType #{params['EventType']}"

或转义用户输入:

render :status => 406, :text => "Unexpected EventType #{ERB::Util.html_escape(params['EventType'])}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM