【问题标题】:How to validate URIs by checking if those refer to a given domain name?如何通过检查是否引用给定域名来验证 URI?
【发布时间】:2015-01-09 11:15:38
【问题描述】:

我正在运行 Ruby on Rails 4.1.1,我想通过检查 URI 是否在给定域名中来验证这些 URI。也就是说,uri 字符串可以作为params 发送到我的控制器,我想检查uri 是否“引用”我的应用程序域名www.myapp.com。当然,uri 应该是有效的URI reference

# Invalid URIs
www.website.com
http://www.website.com
http://www.website.com/
https://www.website.com/
ftp://www.website.com/
ftps://www.website.com/
http://www.website.com/some/path

# Valid URIs
www.myapp.com
http://www.myapp.com
http://www.myapp.com/
https://www.myapp.com/
ftp://www.myapp.com/
ftps://www.myapp.com/
http://www.myapp.com/some/path

我怎样才能做到这一点(也许只使用 Ruby on Rails)?

注意:我正在验证 URI 以允许用户设置自定义重定向,并且我知道 vulnerabilities。我计划以我的application_controller.rb 中所述的方法运行验证。

【问题讨论】:

标签: ruby-on-rails ruby validation ruby-on-rails-4 uri


【解决方案1】:
require 'uri'

uri = URI.parse 'http://www.website.com/some/path'

isOK = case uri.host
       when 'www.website.com' then true
       else false
       end

#⇒ true

希望对你有帮助。

【讨论】:

    【解决方案2】:

    目前Addressable 是我使用 URI 的首选:

    require 'addressable/uri'
    
    Addressable::URI.parse('http://www.myapp.com/some/path').host == 'www.myapp.com'
    

    【讨论】:

      猜你喜欢
      • 2017-12-27
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      相关资源
      最近更新 更多