And*_*vey 7 redirect ruby-on-rails brakeman
Rails应用程序中的模型有一个url列,用户可以在其中输入外部站点的地址.
网址显示在页面上.点击后,除了路由到该网址外,我还需要在应用中执行一些操作.所以我定义了一个控制器动作如下
#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
Run Code Online (Sandbox Code Playgroud)
并在视图中
<%= 'click me', click_object_path @object %>
Run Code Online (Sandbox Code Playgroud)
Brakeman(正如预期的那样)发出警告
High - Redirect - Possible unprotected redirect
Run Code Online (Sandbox Code Playgroud)
通常,解决方案是添加only_path: true到重定向并仅允许当前应用程序中的重定向.但在这种情况下,所需的行为是导航到外部站点.
我的问题
对于其他有类似问题的人,我向我的控制器添加了一些检查以验证 @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
Run Code Online (Sandbox Code Playgroud)
和布雷克曼报告1 fixed warning。结果!
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |