<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 =&gt; %w( style )过滤这些例子

以上是关于<span style=...> 消毒是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将 <span style="font-weight:bold">some text<span> 转换为 <b>some text

cursor 把鼠标指针的形状弄成一只伸出食指的手

span包含<table></table>,为何不换行了?table用<div style="display:block">包含也不可以

急急急,请问css的span换行问题?

如何为 SPAN 设置高度属性

如何为 SPAN 设置高度属性