3

WygwamとSafecrackerで問題が発生しています。フィールドのWygwam構成を拡張して(font-colorの追加など)、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とEE2.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攻撃に対してWebサイトを効果的に開くことができます(悪意のあるユーザーが他のユーザーのセッションを乗っ取って好きなことをする可能性があります)。

于 2012-11-06T23:17:11.267 に答える
1

Wygwam構成に「removeFormatAttributes」設定を適用している場合は、(とりわけ)スタイル属性が削除されます。

[アドオン]->[モジュール]->[Wygwam]に移動し、問題のフィールドに使用している構成セットをクリックします。そこから、さまざまな設定を選択して、そのセットの動作に影響を与えることができます。

于 2012-11-07T11:15:51.910 に答える