2012-08-10 16 views
5

http://dsecrg.com/files/pub/pdf/XSS_in_images_evasion_bypass_(eng).pdfを読んだ後、ユーザーからのイメージのアップロードを許可すると、XSS攻撃が開始されることは明らかです。PHPを使用してイメージ内のXSS攻撃を防止する

XSS攻撃のアップロード画像をスクリーニングする方法のPHPの例は見つかりませんでした。

私が使用しているCodeIgniterの1つが見つかりました。この機能はxss_clean($file, IS_IMAGE)ですが、ドキュメントの文章は1文しかないので、どのように動作するのか分かりませんし、フォーラムのコメントでは不合理に高い誤認率があり、プロダクションでは使用できません。

アップロードした画像内でXSS攻撃を防止するにはどうすればよいですか?

答えて

4

エクステンションを正しく保持している限り(ユーザーはブラウザを更新することに勤勉です)、イメージ注入はできません。

たとえば、誰かがalert('xss');を画像としてアップロードし、<img src='that-image.png'>を持っていると、その画像はpngとして出力され、JavaScriptは実行されません(少なくともIE7に戻る)。重要なのは、イメージの名前を適切に変更することです。

PECLの拡張子が「5.3」でPECLの拡張子が「finfo」の場合、これを使用してファイルのMIMEタイプを取得し、許可するタイプのホワイトリストを作成できます(png、jpg、gifと思います)。あなたがLinuxマシンであれば、fileも同様に役立つかもしれません。

+0

私は個人的にアプリケーション/オクテットストリームとしてすべてを送信します –

+0

ありがとう爆発、これは私がそれを処理する方法です。 私が上にリンクした記事で述べたように: "この脆弱性はアプリケーションの脆弱性から来ているとは言えませんが、cyber-crookはPHPシェルをインストールして、ローカルPHPには脆弱性が存在し、その場合ブラウザの機能はもはや関連性がなくなり、ユーザのデータを処理する場合にはフィルタリングが必要であることが確認されています。 それは私のサーバーが更新され、それを考えた後に怖がっていました... IE 7ユーザーがハッカーに所有されているかどうかは気にしません。 – Justin

0

CodeIgniterには、XSSを防止する方法がたくさんあります。 - > post( 'data'、true)のような値を取得するときに有効にすることができます。 2番目のパラメータはXSSブールです。

また、HTML IMGタグを使用しないでください。きれいに見えるようにCodeIgniterを使用して、画像を表示しやすくします。

ちょうど私の2セント!

+0

xss_clean($ file、TRUE)を特に使用しない限り、実際に画像をフィルタリングするかどうかはわかりません。ここでIS_IMAGEを参照してください:http://codeigniter.com/user_guide/libraries/security.html – Justin

+0

コードシニターの[img()]関数[HTMLヘルパー](http://ellislab.com/codeigniter/user-guide /helpers/html_helper.html#img)**セキュリティチェックは一切ありません**、単に ''タグを作成します。私の好みの方法は、画像のMIMEタイプを取得し、あなたが知っているタイプのみが安全であることを許可することです... –

関連する問題