gpt4 book ai didi

ruby-on-rails - 需要重定向到外部域时,如何防止 Brakeman 'unprotected redirect' 警告?

转载 作者:行者123 更新时间:2023-12-04 06:24:24 29 4
gpt4 key购买 nike

Rails 应用程序中的模型有一个 url 列,用户可以在其中输入外部站点的地址。

网址显示在页面上。单击时,除了路由到该 url 之外,我还需要在应用程序中执行一些操作。所以我定义了一个 Controller Action 如下

#objects_controller.rb

def click
@object = Object.find params[:id]
# do some stuff
respond_to do |format|
format.html { redirect_to @object.url }
end
end

并且在 View 中
<%= 'click me', click_object_path @object %>

Brakeman(正如预期的那样)发出警告
High - Redirect - Possible unprotected redirect

通常对此的解决方案是添加 only_path: true到重定向,只允许在当前应用程序内重定向。但在这种情况下,所需的行为是导航到外部站点。

我的问题
  • 我是否应该采取任何步骤来确保无法从 Object.url 列输入和激活恶意代码(或者换句话说,我的点击 Controller 操作是存档所需应用内操作和导航的最佳方式)?
  • 如果这是正确的方法,是否有办法让 Brakeman 安静下来,以便不再报告此特定问题?
  • 最佳答案

    对于其他有类似问题的人,我向我的 Controller 添加了一些检查以验证 @object.url 确实是格式正确的 url。

    def click
    @object = Object.find params[:id]
    if @object.url =~ URI::regexp
    obj_url = URI.parse(@object.url)
    else
    obj_url = nil
    end
    # do some stuff
    respond_to do |format|
    format.html { redirect_to obj_url }
    end
    end

    和 Brakeman 报告 1 fixed warning .结果!

    关于ruby-on-rails - 需要重定向到外部域时,如何防止 Brakeman 'unprotected redirect' 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642378/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com