2010-11-19 1 views
0

私はチャットルームのウェブサイトを行っていますが、現在、ユーザーは希望するものを入力ボックスに入力してすべてのオンラインユーザーに送信できます。しかし、悪意のあるhtml/javascriptコードを送信している悪意のある人がいれば、他のすべてのユーザーを壊すことは安全ではないのではないかと恐れています。チャットルームアプリケーションでの悪質な送信を回避する方法

これを回避するにはどうすればよいですか?

答えて

3

誰もがすでに正しいと言いました。すべてのデータをエンコードしてからユーザーに送信する必要があります。

私はちょうどかかわらず、追加したい:あなたが使用しているWebフレームワークが提供する内蔵(したがって、十分にテストされた)の方法で、サーバーにこのエンコーディングを行うことを確認してください。

クライアントでJavaScriptでこれを行うようにしてください。ユーザーが入力できるさらなる悪意のあるコードがあり、JavaScript自体を壊す可能性があります。

そして、はエンコードメカニズム「独自のロール」もブラックリストにあなたが誰かを入力して、それらを置き換えることができる唯一の特定の「悪い」ものを見つけるためにしようとアプローチを、使用しようとしませ試してください。すべての「悪いこと」が何であるかは決して推測できません。

Webフレームワークについては言及していませんが、ほとんどの場合、文字列全体がブラウザに文字どおり表示されるようにHTMLが組み込まれています。内容はです。

+0

私はflupを使ってpython cgiを書いています。何か提案はありますか? –

1

すべてのHTMLをオペコードに変換することもできます。したがって、<を送信するのではなく、&lt;などを送信します。

このようにして、コードは入力されたとおりに表示されますが、実行しないでください。

2

あなたが送信したいと思う内容をエンコードしてください。たとえば、ユーザーが<と入力した場合、HTMLタグを開始するのではなく、<と表示することをお勧めします。その出力をHTMLページに出力する場合は、&lt;としてエスケープする必要があります。これは、HTMLタグを入力する人々を防ぐという素晴らしい効果をもたらします(HTMLを送信できない場合、scriptタグを送信するのは難しいでしょう)。あなただけの(それほど悪質な出力に対する保護のために)出力が正しい持つことさえエンコードする必要があり

最低限< =>&lt;& =>&amp;です。私はいつもまた> =>&gt;も徹底していますし、いつか考えるのを助けることができないので、どういうわけか、それは問題になるでしょう。 :-)

1

PHPを使用している場合は、指定したタグは削除されますが、許可する場合はHTMLも許可されます。strip_tags()を使用できます。

+0

'strip_tags()'は彼が望むものではないかもしれません。例えば、時には人々は ''を何かに反応して笑っているような「感情」のように入力することがあります。また、いくつかのタグを許可しようとすると、危険に満ちている可能性があります。数週間前にonHover攻撃の後にTwitterに尋ねるだけです。 –

+0

これが彼に当てはまる場合、私はちょうど私の答えを投げた。多分、彼はどんなタグも望んでいないのですが、それは問題ではありませんか?彼がいくつかのタグを必要としている場合でも、正規表現やその他の最小限の余分なコードで属性を取り除くことができます。 –

関連する問題