我想要一个类似如下的Flash消息:调用flash消息html_safe会有危险吗?
“该确认链接无效或过期,点击此处生成一个新消息。
“点击这里”当然是一个链接到应用程序中的另一个动作,其中可以生成一个新的确认链接。两个缺点:一,由于link_to没有在设置flash消息的控制器中定义,所以我必须将链接html放入自己。没什么大不了的,但有点混乱。
号之二:为了让链接,其实我有html_safe在查看Flash显示功能在网页上正常显示,所以现在它看起来像(使用Haml的):
- flash.each do |name, message|
= content_tag :div, message.html_safe
这使我暂停。一切我html_safe已经HTML我已经写了自己的助手和whatnot,但闪存哈希的内容存储在客户端的cookie,可以想像会改变。我已经考虑过了,我不明白这是如何导致XSS攻击的,但是XSS对我来说并不是很了解。
所以,有两个问题: 1.总是html_safe-flash这样的所有内容都有危险吗? 2.这个解决方案非常混乱(通过在控制器中使用HTML来打破MVC,总是html_safe - 所有flash内容)这一事实让我觉得我正在讨论这个错误。有没有更优雅的Rails-ish方式来做到这一点?
我正在使用Rails 3.0.0.beta3。
这不起作用,因为字符串的html_safe属性不会在请求之间持续存在。在第二个请求(重定向之后),flash消息将从cookie反序列化并再次成为正常的非html_safe字符串。我认为这将工作,如果我使用flash.now,但我不是......谢谢无论如何。 – PreciousBodilyFluids 2010-05-23 20:55:27
好吧,我不知道这一点,比你必须确保没有用户输入消息,或者用户输入必须在它被放入闪光消息之前被转义,我已经更新了我的答案! – jigfox 2010-05-23 21:18:19