【发布时间】:2020-11-27 13:51:00
【问题描述】:
我想通过recognize_path 像这样检查routes.rb 中是否确实存在任何传入请求作为条目
def path_exists?(path)
Rails.application.routes.recognize_path(path)
true
rescue
false
end
这适用于大多数 URL,但如果 URL 有参数,则无法识别它。
示例:
在 routes.rb 中,假设我有这样的条目
put "foo/bar/:param" => "foo#bar"
传入的请求 URL 格式为 /foo/bar/5
那么函数recognize_path不识别URL,因为参数的值是5但它与:param匹配
如何使用 recognize_path 或任何其他类似函数将具有参数的请求与其在 routes.rb 中的条目匹配?
原因
我正在使用 gem 过滤掉使用随机 URL(如 /dump.sql.tar.gz、/conf.xz 等)攻击服务器的恶意尝试rack::attack 和 throttling 请求的 URL 不是 routes.rb 的一部分。因此出现了上述问题。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 security rack