:前の表示にRailsの実装
www.myapp.com/attachment/5ユーザーを認証する必要があり、その/ドキュメントをダウンロードします。
私はstackoverflowで同様の質問を読んだことがありますが、私は良い結論を見たことがわかりません。
私が読んだところでは、S3文書を「保護する」ためにできることがいくつかあります。
1)URLを難読化します。私はこれをしました。私はこれが良いことだと思うので誰もURLを推測することはできません。たとえば、S3 URLが明白な場合は、URLを「歩く」ことは簡単です(https://s3.amazonaws.com/myapp.com/attachments/1/document.doc)。 URLが: https://s3.amazonaws.com/myapp.com/7ca/6ab/c9d/db2/727/f14/document.docの方がはるかに優れているようです。 これは素晴らしいことですが、電子メールやウェブサイト経由でURLを渡す問題は解決しません。私にとってRails 3, paperclip + S3 - Howto Store for an Instance and Protect Access をしかし、これはURLでもちょうど時間の短い期間(露出しているため優れたソリューションではありません、)と別のユーザーは、おそらく時間に再利用することができます:
2)ここに示すように、期限切れURLを使用しますすぐにURLコピーに時間をかけすぎることなく、ダウンロードできるように時間を調整する必要があります。ちょうど間違った解決策のように思えます。
3)アプリケーションを介してドキュメントのダウンロードをプロキシします。最初はsend_file:http://www.therailsway.com/2009/2/22/file-downloads-done-rightを使用しようとしましたが、これらのファイルはサーバー上の静的/ローカルファイルのみで、別のサイト(S3/AWS)を経由して配信することはできません。私はsend_dataを使用してドキュメントをアプリケーションにロードしてすぐにドキュメントをユーザに提供することができます。このソリューションの問題点は明らかです.2倍の帯域幅と2倍の時間(ドキュメントをアプリケーションにロードしてからユーザーに戻す)です。
#3の完全なセキュリティを提供しますが、追加の帯域幅と読み込み時間を必要としないソリューションを探しています。それはBasecampが(認証を介して)自分のアプリの背後にあるドキュメントを「保護」しているように見えますが、私は他のサイトも同様のことをしていると思いますが、彼らは#3のソリューションを使用しているとは思わない。
提案をいただければ幸いです。
UPDATE:リファラに基づいてファイルへのアクセスを制御するためにアマゾンバケットポリシーを使用)
4:
私は第四溶液で行きました http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?UsingBucketPolicies.html
AGAIN UPDATE:
ウェル#4は、ブラウザの開発ツールを使用して簡単に処理できます。だから私はまだ固い解決策を探しています。
ポストに感謝します。それは私の#2の解決策ではありませんか?私はそれが実行可能だが、それは本当に安全なアプローチではないように思える。何らかの理由で、私はそれが穴を残すように感じます(たとえそれがやや小さかったとしても)。二重帯域幅の問題なしに私の#3を実装する方法に関する提案はありますか? –
それはあなたが得ることができるように安全に近いです。あなたはこれを取得するために何らかの種類のリバースプロキシを使用することができるかもしれませんが、帯域幅はこれでどこかで使用されるつもりです。タイムアウトを1分に設定するだけです。 –
私は、RoRからの認証に基づいてリダイレクトできるいくつかのapacheプラグインに関連する解決策がいくつか欠けていたと思っていました。タイムアウトは(あなたが設定しようとするウィンドウの大きさに関係なく)まだいくつかのレベルの不安定さを許していませんか?それにもかかわらず、私はこれがちょうど2つの答えかもしれないことに同意します。他に誰もチャイムしていない場合、私はあなたを正しい答えとして設定します。ありがとうございました。 –