CKEditor自动删除样式属性并添加xss属性'removed',就像我在一个元素中放置一个样式属性一样:
<div class="text-center" style="text-align: center;">Test Heading</div>
保存后我得到以下输出:
<div class="text-center" xss="removed">Test Heading</div>
我的配置是:
var toolbar_custom=[
{ name: 'document', items: [ 'Source' ] },
{ name: 'editing', items: [ 'Scayt' ] },
{ name: 'basicstyles', items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat' ] },
{ name: 'paragraph', items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'] },
{ name: 'insert', items: [ 'Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ] },
{ name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },
{ name: 'styles', items: [ 'Styles', 'Format', 'Font', 'FontSize' ]}
];
jQuery(function(){
CKEDITOR.replace('template_editor_custom',{
uiColor:'#2778a7',
toolbar:toolbar_custom,
autoParagraph:false,
enterMode:CKEDITOR.ENTER_DIV,
allowedContent:true,
extraAllowedContent:'*{*}'
})
});
HTML:
<textarea class="form-control textbox-style" id="template_editor_custom" name="page[content]" placeholder="Page content"><?php echo set_value('page[content]', $content); ?></textarea>
答案 0 :(得分:3)
我在 CodeIgniter
中使用 CKEditor使用$ this-&gt; input-&gt; post('filed_name',FALSE)的第二个参数
输入文字
select
count(*)/sum(1/col) harmonic_mean,
sqrt(sum(col * col)/count(*)) quadratic_mean
from table1
示例1
<div style="background-color:#eee; padding:15px">
<span style="font-size:16px;"> <u>Friendly Reminder</u> </span>
</div>
<强>输出强>
<?php
echo html_escape($this->input->post('template_editor_custom'));
?>
示例2
<div xss=removed>
<span xss=removed> <u>Friendly Reminder</u> </span>
</div>
<强>输出强>
<?php
echo html_escape($this->input->post('template_editor_custom', FALSE));
?>
答案 1 :(得分:0)
这不是CKEditor的问题 我怀疑您使用的是CodeIgniter 2.x,并启用了“全局XSS过滤”功能。您需要在配置文件中将其关闭:
$config['global_xss_filtering'] = FALSE;
xss=removed
是CodeIgniter中使用的典型清理方法。
答案 2 :(得分:0)
我通过更改core / Security.php文件解决了我的问题。 只需转到_sanitize_naughty_html函数并从这两个静态数组中删除样式标记:
static $naughty_tags = array(
'alert', 'prompt', 'confirm', 'applet', 'audio', 'basefont', 'base', 'behavior', 'bgsound',
'blink', 'body', 'embed', 'expression', 'form', 'frameset', 'frame', 'head', 'html', 'ilayer',
'iframe', 'input', 'button', 'select', 'isindex', 'layer', 'link', 'meta', 'keygen', 'object',
'plaintext', 'style', 'script', 'textarea', 'title', 'math', 'video', 'svg', 'xml', 'xss'
);
static $evil_attributes = array(
'on\w+', 'style', 'xmlns', 'formaction', 'form', 'xlink:href', 'FSCommand', 'seekSegmentTime'
);
我在不影响整个网站安全的情况下解决了这个问题。将来如果要升级CI版本,那么升级后在Security.php中的_sanitize_naughty_html函数中找到这两个数组,并从这两个列表中删除样式标记。
谢谢。