2017-03-15 9 views
0

私はユーザーが画像をアップロードできるようにするCakePHPアプリケーションを持っています。私は現在バージョン2を使用しています。Cakephp Image Security

ハッカーが画像にコードを埋め込み、そのコードがサーバー上で実行される可能性があると私は心配していました。

CakePHPのドキュメントで使用されている画像検証方法を使用している場合は、これについてのセキュリティチェックが含まれていますか?

ここでは、私が求めているものをよりよくexaplinできるリンクがあります。 PHP image upload security check list

事前

答えて

0

のおかげであなたはどのようにサーバー上で実行された画像に埋め込まれたコードだろう、と同様に最初に適切に、あなたが懸念している状況を詳しく説明することができますか?それはどんなコードですか?これらの画像でサーバー/アプリケーションは何をしていますか?ファイルシステム内でそれらを移動するだけで、ファイルの内容に関係なく、何もしません。

CakePHPには、バイナリイメージデータの整合性/妥当性をチェックする検証機能はありません。おそらくValidation::mimeType()のような画像関連の検証メソッドは、PHPのfinfo_*またはmime_content_typeの機能を使って、非常に基本的なファイルヘッダチェックを行います。

たとえCakePHPが画像データ構造を検証しても、人々はメタデータを介してあらゆる種類のものを埋め込むことができるので、誰かが正しいコンテキストに画像を含むことができれば埋め込まれたコードが実行される可能性があります。

最初に述べたように、最初に脅威を評価し、次に適切な防御メカニズムを把握します。 CakePHPの組み込み検証が提供するセキュリティよりもセキュリティが必要な場合は、おそらくイメージとditch/filterメタデータを処理する必要があります。しかし、それが悪用されることがあり、適切例えばPNG IDATのチャンクを細工してもリサイズ/リサンプリングなどのプロセスを乗り切ることがあります。

https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/

+0

こんにちは、 まず第一に、私は時間を割いてくれてありがとうにリンクします特にそのような詳細な返信に対応する。どのコードがサーバー上で実行されているかはわかりませんが、私はオンラインで読んでいます。PHPコードがイメージのヘッダーに埋め込まれていて、コードが実行できますが、これが厳密にPHPであるか、他の言語を使用できるかどうか。 –

+0

私は最初のアップロード時に画像をサーバーにアップロードするためのフォームを用意しています。これはtmpフォルダに置かれ、PHPのmove_uploaded_file関数を使って別の場所に移動します。私は、Webページ上に画像を表示するPHPで構築された別のアプリケーションを持っています。 誰かがPHPコードをヘッダーに埋め込むように管理していて、画像が表示されたらそのコードが実行されてしまうのではないかと心配です。私はこの種の攻撃については初心者であり、適切な方向へのポイントは高く評価されます。 –

+0

@DavidSimpson特定の脆弱性が存在しない限り(例えば、画像処理に使用されるライブラリなど)、そのような埋め込みコードは通常、イメージがPHPコンテキストに含まれる場合にのみ実行されます( 'include 'image.jpg'誰かがターゲットファイル名を管理することができ、それが公にアクセス可能である場合、つまり '* .php'としてそこに存在する場合)。前述したように、MIMEタイプのチェック、イメージタイプのチェック(例: 'getimagesize()')は騙される可能性があるので、より良い保護が必要な場合は、イメージを処理するか、検証。 – ndm