私はs3を使用して、ユーザーからのコンテンツを格納し、ソーシャルネットワークタイプのサービスでアクセスを管理する必要があります。Amazonで事前に署名されたURLは、特定の種類のファイルのみを許可しますか?
はこれまでのところ、これは私がやって考えてきたものである:
- クライアントはLAMPサーバーを伝え、彼はファイルをアップロードしたい
- LAMPは認証し、ユーザーがアップロードすることができS3用presigned URLを生成します。また、秘密鍵を使用してその鍵の暗号化バージョンを作成します。次に、このキーをmysqlテーブルで起動したユーザ(起動時とともに)に追加します。
- LAMPはキーと2からのデジタル署名をクライアントに送信します。
- クライアントはファイルをs3にアップロードします
- 終了後、彼はそのファイルが完了したことをLAMPに伝えます。鍵とデジタル署名を送信します。
- LAMPは、キーと署名の両方が一致していることを確認します。そうであれば、LAMPはクライアントが与えられた鍵について正直であることを知っています(そして彼はランダムに生成していません)
- LAMPはs3をチェックして、その鍵を持つファイルが存在する2.
で追加された行を削除私の質問は:上記データは、いくつかの重大な欠陥、非効率性を持っている
- 流れていますか?
- それはどのように変更することができるよう、私は十分ではありませんユーザーのみ.Iは拡張子だけをチェックすると信じて(PNG、JPG、PDFなどのような)のみ有効なファイルをアップロードすることが許可されていることを確認してください行う
2倍の帯域幅を節約できるため、私はダイレクトアップロードを行っています。私はサーバーにファイルをダウンロードしてからs3にアップロードする必要はありません。 –
@harvey_slash大規模でない限り、私はそれをしません – Machavity
EC2へのデータ転送は無料です。 EC2からS3へのデータ転送(同じ地域内にある場合)も無料です。また、EC2からS3へのデータ転送は非常に高速です。 –