ログインしたユーザーが WYSIWYG エディターを使用してページに記事を投稿する権限を与えられているエンタープライズ レベルのアプリケーションがあります。(このアプリケーションは Web サイトビルダーと見なすことができます。)
すべて正常に動作しますが、問題は次のとおりです。
WYSIWYG エディターは HTML を含む記事を投稿します。また、Laravel が好まないローカライズされた文字列も含まれているため、Laravel の
alpha_num
チェックに合格できません。(したがって、検証チェックでは使用しません。)<
,などの文字を許可する必要があるのは"
、>
WYSIWYG エディターを使用して基本的なスタイリングを行いたい場合があるためです。これhtmlspecialchars()
は、値をエコー/サニタイズする際のオプションではありません<br>
。ユーザーは次のようなものを投稿できます。
<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_num
Laravelの上にカスタムルールを作成することを考えています。これはalpha_num_localised_characters_plus_allowed_html_tags
、WYSIWYGエディターを含む入力にそのルールを追加するようなものとして呼び出されます。
これは良い方法ですか?より良い代替手段はありますか?そのような問題にあなた自身はどのように対処していますか?
注: 私たちはすでに巨大なサイズのアプリケーションを開発していることに注意してください。最も迅速で保守しやすいソリューションに依存します。