<span style=...> 消毒是不是安全?
Posted
技术标签:
【中文标题】<span style=...> 消毒是不是安全?【英文标题】:Is <span style=...> safe for sanitize?<span style=...> 消毒是否安全? 【发布时间】:2011-07-19 07:16:53 【问题描述】:我正在使用富文本编辑器 (CKEditor),我有机会让用户创建显示给其他用户的配置文件。
当我将 CKEditor 可以控制的许多属性显示为:
<%= sanitize(profile.body) %>
我的问题是:允许解析属性“样式”是否安全?这将允许显示文本颜色、大小、背景颜色、居中、缩进等内容。我只是想确保它不会让黑客访问我不知道的东西!
【问题讨论】:
【参考方案1】:允许解析属性'style'是否安全?
没有。
background-image: url(javascript:[code]);
width: expression([code]); /* ie */
behavior: url([link to code]); /* ie */
-moz-binding: url([link to code]); /* ff */
更不用说 UI 欺骗攻击,例如将虚假登录表单置于真实登录表单或其他东西之上。
【讨论】:
哈!非常感谢,我有感觉:) 另见CSS Injection 这再次表明您不能安全地加入黑名单。如果您没有考虑过在 CSS 中将 url 规则列入黑名单,那么您现在就会遇到问题。你甚至不能输出一个 CSS 字符串,你真的需要完全解析它并且只输出解析后的 DOM。 但 sanitize() 不使用白名单吗? sanitize 似乎用:attributes => %w( style )
过滤这些例子以上是关于<span style=...> 消毒是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中将 <span style="font-weight:bold">some text<span> 转换为 <b>some text
span包含<table></table>,为何不换行了?table用<div style="display:block">包含也不可以