2015-01-09 35 views
0

我正在運行Ruby on Rails 4.1.1,我想通過檢查這些URI是否在給定的域名中來驗證URI。也就是說,uri字符串可以作爲params發送到我的控制器,我想檢查該uri「是否」指向我的應用程序域名www.myapp.com。當然,uri應該是有效的URI reference如何通過檢查是否引用給定的域名來驗證URI?

# 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中所述的方法運行驗證。

+0

使用此 - http://ruby-doc.org/stdlib-2.1.1/libdoc/uri/rdoc/URI.html –

回答

4
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 

希望它有幫助。

0

目前Addressable是我的首選與URI的工作:

require 'addressable/uri' 

Addressable::URI.parse('http://www.myapp.com/some/path').host == 'www.myapp.com' 
相關問題