我有一个rails 4应用程序,我将URL存储在数据库中。当rails尝试再次调用它时,链接不再可用。
所以我用:
<%= @product.url.html_safe %>
但是不容易受到XSS的攻击吗?我也阅读了raw(),但它似乎与html_safe做同样的事情?
答案 0 :(得分:1)
您可以使用URI.parse
来确保对网址进行转义:
<%= URI.parse @product.url %>
但是,这最好放在验证中:
答案 1 :(得分:1)
如果我是你,我会在网址上添加验证以确保它是有效的网址:
class Product < AR::Base
validate :valid_url
private
def valid_url
return if url.blank? || !url_changed
URI.parse url
rescue URI::InvalidURIError
errors.add :url, :invalid
end
end
有了这个,你可以确定没有XSS的可能性。