【问题标题】:Safely storing html rails安全存储 html rails
【发布时间】:2025-12-31 12:50:11
【问题描述】:

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

所以我使用:

<%= @product.url.html_safe %>

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

【问题讨论】:

    标签: ruby-on-rails ruby security


    【解决方案1】:

    您可能会使用 URI.parse 来确保 URL 被转义:

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

    不过,这最好放在验证中:

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

    【讨论】:

      【解决方案2】:

      如果我是你,我会在 url 上添加验证以确保它是有效的 url:

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

      【讨论】: