2011-08-09 4 views
0

私はこの問題の良い解決策を見出しておらず、誰かがすでに同様のことをしていることを願っています。プライベートURLを非表示にする練習方法は何ですか?

サーバに保存されている画像のリストを読み込むためのjavascriptプログラムを作成しましたが、画像のディレクトリをユーザに知らせたくありません。

var img1 = new Image(); 
img1.src = "my_img_directory/img1.png"; 

var img2 = new Image(); 
img1.src = "my_img_directory/img2.png"; 

この例では、ユーザーは私のWebサーバーにimg1とimg2をどこに保存するかを知っています。 URLが表示されないようにする方法はありますか?

URLをいくつかのランダムな文字列に置き換えることを考えています。たとえば、私はこのような何かをすることができます:

var img1 = new Image(); 
img1.src = decode_URL("auiopjlnad103k"); 

しかし、私はまだ絶対パスでそのランダムな文字列をマップする必要があります。ユーザーは、decode_URLがランダムな文字列を絶対URLに変換する方法を見ることができます。

クライアントでランダムな文字列を復号化すると、ユーザーは秘密鍵を把握してURLを把握できます。

私は考えがなくなったように見えます。これはクライアント側だけでは行えないことですか?すべてのヒントやヘルプは非常に感謝します!

ありがとうございます。

+1

私はこのサーバー側を行うことをお勧めします。実際の画像のURLが何であるかをユーザーが特定できないようにする方法はありません。 – Ivan

+0

あなたの懸念事項は何ですか? Googleロボットや他の検索エンジンがあなたの画像をインデックスに登録しないようにするには、単にrobot.txtファイルを作成してそこに画像を置くだけです。このURLはもっと多くを示しています。 http://www.google。com/support/webmasters/bin/answer.py?answer = 35308 – Ali

+0

私は解決策があると思います。 –

答えて

3

Firebugのようなツールで着信HTMLを盗聴して、サーバーとの会話全体を見るのを止めるものは何もありません。

プロキシを使用する代わりに、地雷のヘッダーを送信し、サーバー側のコードから画像のコンテンツをストリーミングすることによって画像を送信することもできます。その後、画像はimageserver.php?id=349857348975などから来ているように見えます。

あなたは使用したい:あなたのHTML内<img src="imageserver.php?id=349857348975" />

+0

...しかし、ユーザーは同じ要求をして画像を取得することができます。これはおそらくOPが防止しようとしているものです。 – Phrogz

+5

これは本当です。ルールは次のとおりです。ユーザーが保存することを望まない場合は、インターネットに置かないでください。 –

1

を本当にあなたのサーバー上のディレクトリパスを非表示にするには理由があってはなりません。画像に直接URLを使用している場合、その事実を隠すことはできません。ネットワークスニファやブラウザ開発ツール(Firebug、Chromeインスペクタなど)やFiddlerのようなネットワークプロキシの任意の種類を実行する人は、ブラウザがどのようなものを取得しているかを知ることができます。私は本当に何が要求されているのかを隠す価値はないと言いたい。

サーバは、ディレクトリリストを許可しないようにサーバを設定することができ、誰もそのディレクトリ内のその他のものを見ることができません。

Diodeusに記載されているように、サーバー側のスクリプトで画像を配信することで、パスの概念を非表示にすることができます。しかし、私はあなたが何を得ているのか分かりません。要求には、適切に保護されたサーバーで明らかになっているパス/ファイル名情報と実際に違うイメージをフェッチする識別情報が含まれていなければなりません。

"認証された"ユーザーのみがこの情報にアクセスできるようにするには、イメージへのアクセスを許可する前に認証資格情報(おそらくログインCookie)を確認してサーバー側でそれを強制する必要があります。いずれにせよ、これは主にサーバー側の作業です。

関連する問題