Rea*_*nly 25 xss ruby-on-rails
为了防止Rails应用程序中出现XSS漏洞,推荐使用HTML的方法是什么?
您是否应该允许用户将任何文本放入数据库但在显示时将其转义?你应该添加before_save过滤器来逃避输入吗?
Luk*_*ncl 22
这个问题有三种基本方法.
h()
在您的视图中使用.这里的缺点是,如果你忘了,你得到了pwnd.h()
在你的观点中使用(大多数情况下).还有其他一些在控制器级别上工作.这里的缺点是(a)如果转义代码中存在错误,您可以在数据库中获取XSS; (b)有些情况下你仍然想要使用h()
.然后有一些混合方法.
没有理由不能同时使用xss_terminate和CrossSiteSniper.
还有一个名为Erubis的ERb实现,可以进行配置,以便任何类似的调用都<%= foo.name %>
被转义 - 相当于<%= h(foo.name) %>
.不幸的是,Erubis似乎总是落后于Rails,因此使用它可能会减慢你的速度.
如果你想阅读更多内容,我写了一篇关于使用xss_terminate的博客文章(Xavor亲切地链接到).
Dan*_*rez 14
的ħ是一个别名html_escape,这对于所有逸出HTML标记字符的实用方法:
html_escape('<script src=http://ha.ckers.org/xss.js></script>')
# => <script src=http://ha.ckers.org/xss.js></script>
Run Code Online (Sandbox Code Playgroud)
如果您需要更多控制,请使用sanitize方法,该方法可用作标记和属性的白名单,以允许:
sanitize(@article.body, :tags => %w(table tr td), :attributes => %w(id class style))
Run Code Online (Sandbox Code Playgroud)
我允许用户输入任何内容,将其按原样存储在数据库中,并在显示时转义.这样您就不会丢失输入的任何信息.您可以随时调整转义逻辑...
在视图模板中使用h方法.假设您有一个带有comment属性的post对象:
<div class="comment">
<%= h post.comment %>
</div>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22099 次 |
最近记录: |