3

我遇到了 Wygwam 和 Safecracker 的问题。当我为一个字段扩展 Wygwam 配置(例如添加字体颜色),然后在 Safecracker 中的我的字段上使用该选项时,HTML 似乎像这样被剥离:

而不是这个:

<p>
<span style="color:#ff0000;"><span style="font-size:16px;"><span style="font-family:georgia,serif;">Why aren&#39;t you saving???</span></span></span></p>

我得到这个(提交后):

<p>
<span><span>&lt;span new,courier,monospace;&quot;=&quot;&quot;&gt;Why aren&#39;t you saving???</span></span></p>

我确定这是由于 Safecracker 中的 XSS 过滤造成的,有什么好的解决方案可以解决这个问题吗?我正在使用 Wygwam 的 2.6.3 和 EE 2.5.3 (Safecracker 2.1)。

4

3 回答 3

6

阿德里安所说的一切都是正确的。但是,如果您不允许访客通过此表单发帖,并且它仅适用于经过批准的注册用户,则 XSS 威胁会得到缓解。事实上,当您在 CP 中提交条目时,字段不会传递给 XSS 过滤器。

于 2012-11-07T01:54:31.947 回答
3

看看第 1281 行system/expressionengine/modules/safecracker/libraries/safecracker_lib.php,你会看到:

//@TODO what to do about xss_clean and "naughty" html
//for now you can crack open this file and manually add fields_ids and/or field types to the respective arrays
//to prevent xss_clean
//i had some people complain about not being able to submit <object>'s
$xss_clean = ( ! in_array($field['field_id'], $this->skip_xss_field_ids) && ! in_array($field['field_type'], $this->skip_xss_fieldtypes));

该数组似乎专门用于帮助您解决问题(希望跳过安全破解器字段上的 XSS 过滤)。

该数组在同一文件的第 2612 行附近初始化:

$this->skip_xss_field_ids = array();

因此,您应该能够简单地将字段 ID 添加到此数组中,以跳过 XSS 过滤,如下所示:

$this->skip_xss_field_ids = array(37, 81);

请记住,这是一个非常糟糕的想法。此时,用户现在可以将任意 javascript 添加到他们的 wygwam 字段,并且您已经有效地将您的网站打开到XSS 攻击(恶意用户可以劫持其他用户的会话并为所欲为)。

于 2012-11-06T23:17:11.267 回答
1

如果您将“removeFormatAttributes”设置应用于您的 Wygwam 配置,它将删除样式属性(以及其他属性)。

转到附加组件 -> 模块 -> Wygwam,然后单击您用于相关字段的配置集。从那里您可以选择各种设置来影响该设置的工作方式。

于 2012-11-07T11:15:51.910 回答