【发布时间】:2010-05-23 20:01:58
【问题描述】:
我想要一条类似于以下内容的 Flash 消息:
“该确认链接无效或已过期。单击此处生成一个新链接。”
“单击此处”当然是指向应用程序中另一个操作的链接,在该操作中可以生成新的确认链接。两个缺点:一,由于在设置 flash 消息的控制器中没有定义 link_to,我必须将链接 html 放入自己。没什么大不了的,但有点乱。
第二个:为了让链接在页面上正确显示,我必须对视图中的 flash 显示功能进行 html_safe,所以现在它看起来像(使用 Haml):
- flash.each do |name, message|
= content_tag :div, message.html_safe
这让我停下来。我 html_safe 的所有其他内容都是我自己在 helpers 中编写的 HTML,但闪存哈希的内容存储在 cookie 客户端中,并且可以想象得到更改。我已经考虑过了,我不明白这会如何导致 XSS 攻击,但无论如何我对 XSS 并不是很了解。
所以,有两个问题: 1. 像这样总是 html_safe-ing 所有 flash 内容有什么危险吗? 2. 这个解决方案是如此混乱(通过在控制器中使用 HTML 来破坏 MVC,总是 html_safe-ing 所有 flash 内容)的事实让我觉得我做错了。有没有更优雅的 Rails 方式来做到这一点?
我正在使用 Rails 3.0.0.beta3。
【问题讨论】:
标签: ruby-on-rails xss ruby-on-rails-3