3

データベースへの投稿を作成しているフォームでjWYSIWYGを使用していますが、悪意のあるユーザーがフレームにコードを挿入しようとするのを防ぐにはどうすればよいでしょうか。

エディターは、スタイルを表示するために角かっこ(通常は後処理中に削除します)を必要としませんか?

4

3 に答える 3

2

エディターが任意のHTMLを許可している場合、ユーザーはエディターを使用して悪意のあるコンテンツを作成するだけでよいため、敗戦を戦うことになります。

エディターがマークアップのサブセットのみを許可する場合は、代替構文を使用するか(stackoverflowの方法と同様)、特定のホワイトリストに登録されたタグを除くすべてのHTMLをエスケープする必要があります。

これを正しく行わないのは非常に簡単なので、セキュリティについて適切にテストされたサードパーティのソリューションを使用することに注意してください。

于 2010-06-15T18:44:01.763 に答える
2

最終的に、出力をデータベースに挿入するときは、出力を自分の手に委ねます。これは、悪意のあるものをすべて取り除く必要があるときです。最も簡単な方法はhtmlentites、そのようなデータに対しておそらく使用することですが、悪意のある人がそれを回避できる他の方法があります。inputこれは、 XSS攻撃の可能性に対抗するために、人気のあるKohanaphpフレームワークによってそのクラスに実装された優れたスクリプトです。

http://svn.bitflux.ch/repos/public/popoon/trunk/classes/externalinput.php

于 2010-06-15T18:53:53.040 に答える
1

私は同様の状況に遭遇し、PHPバックエンドでHTMLPurifierを使い始めました。これにより、考えられるすべての攻撃ベクトルを防ぐことができます。インストールは簡単で、要素と属性をホワイトリストに登録できます。また、htmlentitiesを使用しているときにまだ存在する可能性のあるXSS攻撃を防ぎます。

于 2010-06-16T03:40:27.893 に答える