Wil*_*nes 5 xss ruby-on-rails actionmailer actionview ruby-on-rails-3
我在我的视图和邮件中使用以下代码集:
<%= simple_format(auto_link(h(user_input))) %>
Run Code Online (Sandbox Code Playgroud)
我首先在user_input上调用html_safe(h),以逃避任何危险的代码.然后我调用auto_link来启用其输入中的任何链接,然后我调用simple_format来启用换行符等.
这在我的视图中完美运行,并正确显示以下内容,完全转义,但有一个工作链接:
" http://google.com "
Run Code Online (Sandbox Code Playgroud)
但是,当ActionMailer电子邮件中显示完全相同时,我看到所有特殊字符,包括我的自动链接,双重转义(&quot;例如,结果无法正确显示):
&quot; <a href=3D"http://google.com">http://google.=com</a> &quot;
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我需要再次将其重新标记为html_safe以使其正常工作:
<%= simple_format(auto_link(h(user_input))).html_safe %>
Run Code Online (Sandbox Code Playgroud)
这正确输出:
" <a href=3D"http://google.com">http://google.com</a> "
Run Code Online (Sandbox Code Playgroud)
有关为什么ActionView和ActionMailer以不同方式处理相同代码的任何想法?
如果从电子邮件模板中调用simple_format(以呈现换行符),您获得的行为非常不寻常,并且事实证明这个帮助程序被私有方法覆盖.
无论如何,您可以使用此hack访问电子邮件模板中的simple_format:
ApplicationController.helpers.simple_format()
Run Code Online (Sandbox Code Playgroud)
希望在另一个rails版本中,这将被修复.
| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |