2017-08-28 163 views
0

CKEditor的自動刪除樣式屬性XSS屬性,並添加「刪除」一樣,如果我把一個元素的樣式屬性XSS屬性:CKEditor的自動刪除樣式屬性,並添加「刪除」

<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> 

回答

-1

這不是CKEditor的問題。
我懷疑你使用的是CodeIgniter 2.x,並且你已經啓用'Global XSS Filtering'。您需要關閉它在你的配置文件:

$config['global_xss_filtering'] = FALSE; 

xss=removed是CI中使用的典型消毒方法。

+0

不,我使用CI V3。 1.X,我通過從列表中刪除核心/ Security.php文件中刪除樣式限制來解決該問題。如果我將全局xss過濾設置爲false,則會影響整個網站的安全性。 –

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函數中找到這兩個數組,然後從這兩個列表中刪除樣式標籤。

謝謝。

1

我使用CKEditor的

它使用的$這個 - 第二個參數>輸入 - >後( 'filed_name',FALSE)

輸入文本

工作
<div style="background-color:#eee; padding:15px"> 
    <span style="font-size:16px;"> <u>Friendly Reminder</u> </span> 
</div> 

實施例1

<?php 
    echo html_escape($this->input->post('template_editor_custom')); 
?> 

輸出

<div xss=removed> 
    <span xss=removed> <u>Friendly Reminder</u> </span> 
</div> 

實施例2

<?php 
    echo html_escape($this->input->post('template_editor_custom', FALSE)); 
?> 

輸出

<div style="background-color:#eee; padding:15px"> 
    <span style="font-size:16px;"> <u>Friendly Reminder</u> </span> 
</div>