安全存储html rails

时间:2014-05-19 22:17:31

标签: ruby-on-rails ruby security

我有一个rails 4应用程序,我将URL存储在数据库中。当rails尝试再次调用它时,链接不再可用。

所以我用:

<%= @product.url.html_safe %>

但是不容易受到XSS的攻击吗?我也阅读了raw(),但它似乎与html_safe做同样的事情?

2 个答案:

答案 0 :(得分:1)

您可以使用URI.parse来确保对网址进行转义:

<%= URI.parse @product.url %>

但是,这最好放在验证中:

Rails: What's a good way to validate links (URLs)?

答案 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的可能性。