データベースへの投稿を作成しているフォームでjWYSIWYGを使用していますが、悪意のあるユーザーがフレームにコードを挿入しようとするのを防ぐにはどうすればよいでしょうか。
エディターは、スタイルを表示するために角かっこ(通常は後処理中に削除します)を必要としませんか?
データベースへの投稿を作成しているフォームでjWYSIWYGを使用していますが、悪意のあるユーザーがフレームにコードを挿入しようとするのを防ぐにはどうすればよいでしょうか。
エディターは、スタイルを表示するために角かっこ(通常は後処理中に削除します)を必要としませんか?
エディターが任意のHTMLを許可している場合、ユーザーはエディターを使用して悪意のあるコンテンツを作成するだけでよいため、敗戦を戦うことになります。
エディターがマークアップのサブセットのみを許可する場合は、代替構文を使用するか(stackoverflowの方法と同様)、特定のホワイトリストに登録されたタグを除くすべてのHTMLをエスケープする必要があります。
これを正しく行わないのは非常に簡単なので、セキュリティについて適切にテストされたサードパーティのソリューションを使用することに注意してください。
最終的に、出力をデータベースに挿入するときは、出力を自分の手に委ねます。これは、悪意のあるものをすべて取り除く必要があるときです。最も簡単な方法はhtmlentites
、そのようなデータに対しておそらく使用することですが、悪意のある人がそれを回避できる他の方法があります。input
これは、 XSS攻撃の可能性に対抗するために、人気のあるKohanaphpフレームワークによってそのクラスに実装された優れたスクリプトです。
http://svn.bitflux.ch/repos/public/popoon/trunk/classes/externalinput.php
私は同様の状況に遭遇し、PHPバックエンドでHTMLPurifierを使い始めました。これにより、考えられるすべての攻撃ベクトルを防ぐことができます。インストールは簡単で、要素と属性をホワイトリストに登録できます。また、htmlentitiesを使用しているときにまだ存在する可能性のあるXSS攻撃を防ぎます。