2017-07-11 8 views
1

ファイルアップローダーのファイルタイプを確認してファイルがイメージ(jpg、png)であるかどうかを確認し、FileReaderでファイルのマジックナンバー(4バイト目)を読み取ることにしましたが、この方法について:マジックナンバーでファイルタイプを確認する

  1. この方法は安全ですか?この方法でjpgファイル以外のファイルをアップロードする方法はありますか?

  2. 2、4、6バイトなどの異なるマジックナンバーのファイルタイプを見たことがあります。イメージファイルタイプだけでなく、他のタイプのファイルタイプも判別する必要がある場合は、ファイルから最大のバイト数(最大のマジックナンバーを判断する)を読んでください。

+0

jpgファイルは「安全」で、非jpgは「安全でない」とはどうしてですか? – melpomene

+0

https://github.com/DarthSim/carrierwave-bombshel​​ter < - 最初の段落。それはイメージでできることの例です。しかし、たとえばファイル拡張子のみに基づいて検証を設定すると、誰でも実行可能ファイルなどの名前を変更できます。 – Elo

+0

これはどのように適用されますか?デフレートされたイメージボムは完全に有効なイメージファイルです。そして、実行ファイルの名前を変更すると何が問題になりますか? – melpomene

答えて

0
  1. それは安全ではありません。問題はマジックナンバーだけでなく、クライアント側で検証しようとしているという点ですでにあります。 フォームは、クライアント側の検証をバイパスして、スクリプトから直接アップロードすることができます。 正しい方法は、実証済みの手法を使用してサーバー側のすべてを検証することです。

  2. 右。異なるファイルフォーマットは、異なるオフセットで異なるマジックナンバーを持っています。しかし、あなたがセキュリティを気にしているなら、まだ何も信頼しないでください。

+0

私はまた、サーバー側で検証しています:)を忘れてしまった。プレビュー(画像)のためにクライアント側でも検証しています。私が言ったのは、マジックナンバーバリデーションをバイパスする方法はありますか? (あなたが言うことは、プロセス自体をバイパスすることですが、それはすでに制御されています)。あなたの答えをありがとう。 – Elo

+0

クライアント側のファイル拡張子については、十分に私は推測する必要があります:) –

関連する問題