【发布时间】:2025-12-31 12:50:11
【问题描述】:
我有一个 rails 4 应用程序,我将 url 存储在数据库中。当 rails 转义它时,当我再次尝试调用它时,该链接不再可用。
所以我使用:
<%= @product.url.html_safe %>
但是不容易受到 XSS 的攻击吗?我也阅读了 raw() ,但它似乎与 html_safe 做同样的事情?
【问题讨论】:
标签: ruby-on-rails ruby security
我有一个 rails 4 应用程序,我将 url 存储在数据库中。当 rails 转义它时,当我再次尝试调用它时,该链接不再可用。
所以我使用:
<%= @product.url.html_safe %>
但是不容易受到 XSS 的攻击吗?我也阅读了 raw() ,但它似乎与 html_safe 做同样的事情?
【问题讨论】:
标签: ruby-on-rails ruby security
您可能会使用 URI.parse 来确保 URL 被转义:
<%= URI.parse @product.url %>
不过,这最好放在验证中:
【讨论】:
如果我是你,我会在 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 的可能性。
【讨论】: