8

誰でもメールアドレス/クライアントから画像ファイルを送信して処理できるサービスを構築しようとしています。メールで届くダッシュボードに画像を表示するFlickrのようなサービスについて考えてみてください

使いやすさの観点から、このメカニズムは大きな利点を提供しますが、そのようなアクションのセキュリティへの影響を理解したいと思います。いくつかの懸念事項は次のとおりです。

  • これらすべてのファイルを画像として検証する必要があります
  • 人々はおそらく問題になる可能性のあるエクスプロイト/コードを含むファイルを送信する可能性があります。しかし、私の場合は、ほとんどの場合、ファイルを開いて保存し、ブラウザに画像を表示させます。

私はここで正しいアプローチを取っていますか?私がすべき深刻な結果はありますか?

4

3 に答える 3

7

あなたがしなければならないことと考慮に入れるべきこと。

  1. メールサーバーがウイルススキャン用に構成されていることを確認し、最新の状態に保ちます。それが最初の防衛線になります。

  2. メールが届いたら、既知の堅実なライブラリで画像を処理してみてください。

  3. 多くの電子メールには複数の画像が含まれていることに注意してください。そのうちのいくつかは、送信している画像とはまったく関係がない場合があります。たとえば、当社の電子メールはすべて、下部に当社のロゴが含まれています。ここでの解決策は正確にはわかりませんが、考慮に入れる必要があります。

  4. さまざまな電子メールクライアントが画像の添付ファイルを処理します。通常のアタッチメントである場合もあれば、本体に埋め込まれている場合もあります。同じクライアント内であっても、添付ファイル付きのプレーンテキストとしてメールを送信したかHTMLメールとして送信したかによって、画像の処理が異なる場合があります。

  5. 人々はあなたのシステムをテストします。彼らは.jsファイルを送信し、画像処理ライブラリをオーバーフローさせるためにヘッダーがジャックされた画像を送信します...

  6. SPFチェックなどの特定の電子メール制限を適用することを検討してください。

  7. 絶対に巨大な画像を受け取る準備をしてください。今日のカメラは非常に大きな写真を撮っており、多くの人はトリミングやサイズ変更の意味を知りません。サーバーに送信される電子メールごとに15MB以上の上限を設定することを検討してください。次に、上記の#2と組み合わせて、画像のサイズをもう少し許容できるサイズに自動変更します。

  8. 問題をユーザーに通知するために実際に使用するメカニズムを決定します。このメカニズムは悪用される可能性があることに注意してください。たとえば、被害者に返信ヘッダーが送信された状態でマシンに送信されたスパムメッセージについて考えてみます。

.netを使用している場合、ファイルがイメージであることを確認するための可能な方法については、これを参照してください。ファイルが.NETのイメージファイルであるかどうかを確認するにはどうすればよいですか。

于 2013-03-13T21:47:56.753 に答える
6

これが100%安全だと言っているわけではありませんが(100%安全になることはありますか?)、次のことを試すことができます。

ポストフィックス(または任意のメールシステム)にエイリアスがあり、受信メールをphp / bash/pythonスクリプトにリダイレクトしてさらに処理するとします。

私が最初に行うことは、画像操作ライブラリ(imagemagickなど)を使用して、すべての受信ファイルを.png形式などに変換し、変換が成功した場合にのみロジックを続行することです。

このように、誰かが悪意のある添付ファイル(phpエクスプロイト、jar、swfなど)を送信した場合、変換は失敗するため、システムによって無視されます。

編集:ImageMagickには、あなたが望むことを正確に実行する「identify」コマンドがあります。

于 2013-03-07T09:15:44.807 に答える
3

メールも簡単にspoofed送信できます。つまり、自分のものではないメールアドレスからメールを送信できます。

これも役立つかもしれません:PHPで画像をアップロードする安全な方法...

于 2013-03-07T12:44:10.837 に答える