ファイルのダウンロードについて。


よく、ダウンロードショップや、firestorageなどのファイル転送サイトでは、
「その時」だけダウンロードできるようになっています。

これは、どのような仕組みなのでしょうか?

例えば、「その時」のファイルダウンロード時には、
「ファイル設置URL」がわかるのではないかと思います。

そうすると、後日、そのURLにアクセスすると、
自由にダウンロードができると思いますが、
これを防いでいる方法の技術参考になるURL等があれば、教えて頂けると助かります。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/05/20 16:46:22
  • 終了:2011/05/27 16:50:03

回答(3件)

id:mdfmk No.1

mdfmk回答回数980ベストアンサー獲得回数1972011/05/20 17:19:42

ポイント27pt

あまり詳しくないので推測の域を出ませんが、参考になればと思い書かせて頂きます。

例えばSSL認証などがありますね。

認証した本人以外該当するファイルやフォルダにアクセス出来なくなります。

http://alk.dip.jp/apache2-default/sv290.html

id:onigirin

どうもありがとうございます。

銀行などでは、このSSL認証だと思いますが、

firestorageでは、クライアント鍵のインストールもないので、

どういう仕組みか気になります。

2011/05/20 17:21:20
id:taroe No.2

taroe回答回数1099ベストアンサー獲得回数1322011/05/22 02:14:47

ポイント27pt

>例えば、「その時」のファイルダウンロード時には、

>「ファイル設置URL」がわかるのではないかと思います。

ファイルが本当にあるURLが隠ぺいされているからです。

・proxy(プロキシー)のように中継

・ワンタイムパスワードやセッション文字列のように期間限定のURLを生成

id:onigirin

どうもありがとうございます。

コメント欄から、隠蔽でなはく、普通に知ることができないだけだとわかりました。

2011/05/23 17:21:24
id:mkonomi No.3

mkonomi回答回数650ベストアンサー獲得回数452011/05/26 09:46:31

ポイント26pt

>例えば、「その時」のファイルダウンロード時には、

>「ファイル設置URL」がわかるのではないかと思います。

>そうすると、後日、そのURLにアクセスすると、

>自由にダウンロードができると思いますが、

>これを防いでいる方法の技術参考になるURL等があれば、教えて頂けると助かります。

firestorageではアップ時点で保存期間を指定(保存期間は最長7日間)できます。

従って、保存期間経過時点で自動的にそのコンテンツを削除しているだけではないでしょうか?

 

firestorageでは期限切れのURLにアクセスすると

┌─────────────────────┐

(0004)該当のファイルは削除されました。

└─────────────────────┘

と表示されます。

 

id:onigirin

どうもありがとうございます。

コンテンツ削除をしていると思います。

ただ、firestorageだけではなく「有料コンテンツ」は、1週間など期限が決まっています。

もしその間であれば、URLが流出した場合は「ダウンロードし放題」なので、ワンタイムパスワードを発行していると思います。

その辺りの技術を知りたいと思っています。

2011/05/26 15:02:05
  • id:mdfmk
    ちょっと的外れな回答でした。すみません。

    http://msdn.microsoft.com/ja-jp/magazine/dd458793.aspx
    こちらで紹介されている「ステートレスな方法: 自動的に有効期限が切れる URL」部分に記述されている方法ではないでしょうか。

    タイムスタンプの部分を暗号化してあるか、固有のURLごとにデータベース上で有効期限を管理しているかだと思います。
  • id:onigirin
    どうもありがとうございます。

    この場合、ファイルをダウンロードする時に、
    「ファイルの置いてあるURL」が、クライアントからわかる場合は、
    タイムスタンプが切れた後も、「ファイルの置いてあるURL」へアクセスできるのでは、と気になっています。

    ファイルをダウンロードする時に、「ファイルの置いてあるURL」がわからないのであれば、問題ないのですが・・・。
  • id:Lhankor_Mhy
    >タイムスタンプが切れた後も、「ファイルの置いてあるURL」へアクセスできるのでは、と気になっています。
     
    もちろんアクセスはできますが、応答を返すかどうかはCGIプログラム次第です。
    http://ja.wikipedia.org/wiki/Common_Gateway_Interface
     
    ものすごく大雑把に言いますと、こんな感じです。
    ・「ファイルの置いてあるURL」にアクセス

    ・CGIが起動
     ↓
     ・URIからタイムスタンプを抽出
     ↓
     ・時間切れでなければファイルを返す。時間切れなら別の応答を返す。

    ・応答が返ってくる
     
    「ファイルの置いてあるURL」がサーバのディレクトリ構造の中に実際に存在しているかどうかは関係ないんです。
  • id:onigirin
    どうもありがとうございます。

    考えている事態というのは、

    応答が帰ってきたとき、実際にファイルが置いてある「位置」があると思います。
    ダウンロード時に、その「位置」がわかると、
    CGIなどは関係なく、その「位置」にアクセスすればいいのではないか?ということが気になっています。

    ファイルのURLがCGIでも、
    ファイルそのものの位置があると思います。

    サーバーからファイルをダウンロードするとき、
    そのファイルが「どの場所からダウンロードしているか」がわからなければ、
    リジューム機能が使えないと思うので、
    ファイルダウンロードするときには、そのファイルが存在する「位置」が、
    クライアントにわかるのでは、と思います。

    そうなると、CGIなど関係なく、ファイルの「位置」を指定すれば、
    いつでもダウンロード可能、ということになるのでは、ということが、今回気になっています。
  • id:Lhankor_Mhy
    うーん。
    その「位置」っていうのがミソなんですが、URLというのは極大雑把にいうと「場所」で間違いないのですがそうではないこともあるということなんです。
     
    >残りの/wiki/Wikipediaの部分は最終的にリソースを特定するための詳細である。ホストのファイルシステム内でのファイル名あるいはディレクトリ名に対応する場合が多いが、そうでない場合もある。
    http://ja.wikipedia.org/wiki/Uniform_Resource_Locator
     
    「この住所に届けて下さい」と手紙を出したとしても、郵便局が別の場所に届けようと思えば届けられる、という例えはいかがでしょうか?
  • id:onigirin
    どうもありがとうございます。

    はい、その辺りはわかります。

    ただ、ファイルを「サーバー」から「クライアント」へダウンロードしているとき、
    最終的に「どこか」からファイルが送られてきます。

    その「どこか」は、クライアントにはわからない、ということでしょうか?

    もし「どこか」がわからないのであれば、ワンタイムパスワードで解決できます。
    ただ、その「どこか」がクライアントからわかるのであれば、どうすればいいのだろう、ということで、質問しました。

    動画サイトなどでは、
    最終的に「動画ダウンロードサイト」に行くと、
    いくら隠蔽されてても動画の場所を特定してダウンロードしているので、
    ファイルダウンロードも、同じようにできるのでは、と思って気になっています。
  • id:papavolvol
    まだ調べていないので、回答欄ではなく、コメントとして記入します。
    クッキーを使用して、ダウンロードサイトのアクセスを制御しているのだと思います。
  • id:Lhankor_Mhy
    firestorageは、クッキー無効にしましたが動作しました。
     
    >その「どこか」は、クライアントにはわからない、ということでしょうか?
     
    そういうことになります。
    大雑把に言うと、HTTP通信の内容にはヘッダとボディがありまして、データのメタ情報はヘッダに入っています。
    たとえば、firestorageのダウンロードページにFirefoxから先ほどアクセスしましたが、レスポンスのヘッダ情報はこういったものでした。
     
    Date Fri, 20 May 2011 12:25:31 GMT
    Server Apache
    Pragma no-cache
    Cache-Control no-cache
    Expires Thu, 01 Dec 1994 16:00:00 GMT
    Content-Type text/html; charset=utf-8
    Connection close
     
    このHTMLファイルが「どこ」から来たのか、情報がないことはお分かりいただけるかと思います。
    Transfer-Encoding chunked
  • id:mdfmk
    これでどうでしょう。

    【ファイルパスが分かったとしても外部からアクセスできないようにする方法】
    http://www.shtml.jp/htaccess/data.html

    ・ファイルまたはファイルの格納されたフォルダを、.htaccessでURLから全くアクセスできないように設定。
    ・.htaccessでの制限は外部からのアクセスを防ぎますが、内部で動くCGIからはアクセスできる状態になります。


    【ファイルのパスを明かさない方法】
    http://mc255dqn.dtiblog.com/blog-entry-226.html

    ・CGI経由でファイルを直接ブラウザに渡す形にすればパスは外部にもれません。


    【ダウンロード用URLに有効期限をつける】
    ・URLにタイムスタンプを暗号化して埋め込み、サーバー側のシステムクロックと照合して、設定した時間を超えていたらアクセスを拒否する。
  • id:onigirin
    ■papavolvolさん

    どうもありがとうございます。
    クッキーなしでもいけるようなので、別の技術のようです。


    ■Lhankor_Mhyさん

    どうもありがとうございます。

    それでは、CGIなどを通して、極秘のファイル置き場からダウンロードするようにすれば、
    ファイル設置場所が知られることなく、配布できる、ということですね。

    そして、ダウンロード可能期限を決めたハッシュURLへアクセスすると、
    期限内ならダウンロード、期限外ならはじく、ということで、firestorageやダウンロード販売サイトの仕組みになる、ということですね。

    疑問が解決しました。
    回答の方にもなにかひとこと書き込んでおいてくださいね。


    ■mdfmkさん

    どうもありがとうございます。

    「ファイルに直接アクセスできないように」した上で、
    CGI経由から「のみ」可能とすることができるなら、それは安心ですね。

    だいたい全体的な仕組みがわかったので、疑問が解けました。
    大変助かりました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません