8

ログインしたユーザーが WYSIWYG エディターを使用してページに記事を投稿する権限を与えられているエンタープライズ レベルのアプリケーションがあります。(このアプリケーションは Web サイトビルダーと見なすことができます。)

すべて正常に動作しますが、問題は次のとおりです。

  1. WYSIWYG エディターは HTML を含む記事を投稿します。また、Laravel が好まないローカライズされた文字列も含まれているため、Laravel のalpha_numチェックに合格できません。(したがって、検証チェックでは使用しません。)

  2. <,などの文字を許可する必要があるのは">WYSIWYG エディターを使用して基本的なスタイリングを行いたい場合があるためです。これhtmlspecialchars()は、値をエコー/サニタイズする際のオプションではありません<br>

  3. ユーザーは次のようなものを投稿できます。<script type="text/javascript>alert('Hello');</script>または</div></div></div><div style="width: 100%, height: 100% z-index: 999999">、セキュリティ上の大きなリスクであることはわかっていますが、何もサニタイズ/エスケープすることはできません。ユーザーは引き続き<s<!---->cript>、小切手を書いて合格することができます。

つまり、組み込みの Laravel および PHP 関数に依存することはできません。WYSIWYG エディターも、音声アプリケーションの大部分で頻繁に使用されるため、無効にすることはできません。

これを回避する最善の方法は何ですか?

alpha_numLaravelの上にカスタムルールを作成することを考えています。これはalpha_num_localised_characters_plus_allowed_html_tags、WYSIWYGエディターを含む入力にそのルールを追加するようなものとして呼び出されます。

これは良い方法ですか?より良い代替手段はありますか?そのような問題にあなた自身はどのように対処していますか?

注: 私たちはすでに巨大なサイズのアプリケーションを開発していることに注意してください。最も迅速で保守しやすいソリューションに依存します。

4

5 に答える 5

3

すべてをstrip_tagsで実行し、可能な限り最小限のタグのみを許可できますか?

また、css の制御など、より多くのオプションを提供するhtml purifierを確認することもできます。

私が通常行うことは、WYSIWYG コンテンツの 2 つのコピーを保存することです。

  1. 元のフィルタリングされていないコンテンツ
  2. フィルタリングされたコンテンツ

これにより、重要なものが削除されていることがわかった場合に元のコンテンツを再処理し、編集時に元の html をユーザーに表示することができます。明らかに、フィルター処理されたコンテンツは、サイトに表示される場所に表示されます。

于 2013-06-26T09:34:46.420 に答える
2

BBCode や Markdown に似たタグ システムを使用して、ユーザーが特定の操作を実行できるようにすることができます。このようにして、あらゆる種類の悪意のあるスクリプトに対して入力がサニタイズされることを確認できます。ユーザー コンテンツを表示するときにレクサーと XSS 保護を使用するだけです。

編集:私が何を意味するかを確認するには、 BBCode プラグインと組み合わせて、CKEditor を WYSIWYG エディターとして使用できます。

于 2013-07-01T16:33:36.393 に答える
0

Laravel を使用すると、ブレード テンプレート用にサニタイズする必要がある場合もあります。ユーザーが {{{phpInfo()}}} のようなものを入力するのは望ましくありません。

WYSIWYG エディターを構築するには、ユーザーがある程度の信頼を持っている必要があります。ユーザーをまったく信頼していない場合、最善の選択肢は、前述のカスタム タグを使用することです。

于 2014-05-14T11:49:18.100 に答える
-1

これがあなたにとってどれほど実現可能かはわかりませんが、迅速で簡単な解決策の 1 つは、httpOnly cookies を使用することです。これらの Cookie は JavaScript からアクセスできないため、悪意のある JavaScript を挿入することで XSS 攻撃を解決します。機密データを httpOnly Cookie に入れ、通常の Cookie にはあまり機密データを入れないようにすることができます。これを参照してください: http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html

于 2013-06-26T08:28:23.287 に答える