私はチャットルームのウェブサイトを行っていますが、現在、ユーザーは希望するものを入力ボックスに入力してすべてのオンラインユーザーに送信できます。しかし、悪意のあるhtml/javascriptコードを送信している悪意のある人がいれば、他のすべてのユーザーを壊すことは安全ではないのではないかと恐れています。チャットルームアプリケーションでの悪質な送信を回避する方法
これを回避するにはどうすればよいですか?
私はチャットルームのウェブサイトを行っていますが、現在、ユーザーは希望するものを入力ボックスに入力してすべてのオンラインユーザーに送信できます。しかし、悪意のあるhtml/javascriptコードを送信している悪意のある人がいれば、他のすべてのユーザーを壊すことは安全ではないのではないかと恐れています。チャットルームアプリケーションでの悪質な送信を回避する方法
これを回避するにはどうすればよいですか?
誰もがすでに正しいと言いました。すべてのデータをエンコードしてからユーザーに送信する必要があります。
私はちょうどかかわらず、追加したい:あなたが使用しているWebフレームワークが提供する内蔵(したがって、十分にテストされた)の方法で、サーバーにこのエンコーディングを行うことを確認してください。
クライアントでJavaScriptでこれを行うようにしてください。ユーザーが入力できるさらなる悪意のあるコードがあり、JavaScript自体を壊す可能性があります。
そして、はエンコードメカニズム「独自のロール」もブラックリストにあなたが誰かを入力して、それらを置き換えることができる唯一の特定の「悪い」ものを見つけるためにしようとアプローチを、使用しようとしませ試してください。すべての「悪いこと」が何であるかは決して推測できません。
Webフレームワークについては言及していませんが、ほとんどの場合、文字列全体がブラウザに文字どおり表示されるようにHTMLが組み込まれています。内容はです。
すべてのHTMLをオペコードに変換することもできます。したがって、<
を送信するのではなく、<
などを送信します。
このようにして、コードは入力されたとおりに表示されますが、実行しないでください。
あなたが送信したいと思う内容をエンコードしてください。たとえば、ユーザーが<
と入力した場合、HTMLタグを開始するのではなく、<
と表示することをお勧めします。その出力をHTMLページに出力する場合は、<
としてエスケープする必要があります。これは、HTMLタグを入力する人々を防ぐという素晴らしい効果をもたらします(HTMLを送信できない場合、script
タグを送信するのは難しいでしょう)。あなただけの(それほど悪質な出力に対する保護のために)出力が正しい持つことさえエンコードする必要があり
最低限は<
=><
と&
=>&
です。私はいつもまた>
=>>
も徹底していますし、いつか考えるのを助けることができないので、どういうわけか、それは問題になるでしょう。 :-)
PHPを使用している場合は、指定したタグは削除されますが、許可する場合はHTMLも許可されます。strip_tags()を使用できます。
'strip_tags()'は彼が望むものではないかもしれません。例えば、時には人々は '
これが彼に当てはまる場合、私はちょうど私の答えを投げた。多分、彼はどんなタグも望んでいないのですが、それは問題ではありませんか?彼がいくつかのタグを必要としている場合でも、正規表現やその他の最小限の余分なコードで属性を取り除くことができます。 –
私はflupを使ってpython cgiを書いています。何か提案はありますか? –