2011-02-04 3 views
0

私はパスワードで保護されたディレクトリの中に画像を持っていますが、これらの画像の一部を保護されていない通常のサイトに表示します。私のサーバー上の画像はパスワードで保護されたディレクトリの中にあります

私がしようとすると、簡単なとそれらを表示する:

<img src ='PASSWORD PROTECTED DIR/Image.jpg"> 

これは、入力にユーザ名とパスワードを私を求めています。

しかし、実際にはパスワードで保護されたディレクトリ内のコンテンツに移動するときだけ、ユーザー名とパスワードを入力します。

私はPHPを使用しています。

アイデア?

+0

PHPを使用しているかどうかは関係ありません。サーバーソフトウェアとは何ですか? Apache? –

+0

Apacheの仮定のもとで記録されています。別のサーバーソフトウェアであれば変更してください –

答えて

0

多くのトリッキーなコードがなくても、これは基本的に解決できません。 <img>コマンドは、ユーザーがその情報を要求することを示していますが、これは直接要求することとあまり変わりありません。

リクエストがどのように行われたかを確認したり、フィルタしたり、すべての画像をトラフのphpファイルなどにロードしたりできますが、基本的なツールでは不可能です。

<img>タグを直接またはトラフで要求することは同じです。

1

Apacheを使用していると仮定します。

.htaccessファイル内で、パスワード保護を定義するファイルを除外することができます。

テストされていないが、これは動作するはずです:

<Files "path/to/image.jpg"> 
    Allow from all 
    Satisfy any 
</Files> 

が、はるかに望ましいオプションは、単に保護されたディレクトリの外に画像を配置することです。

0

それはPHPですので、あなたは別のファイル(imgHandler.php)表示したい画像のための

<?php 
// Allowed files 
$allowedfiles["image1"] = "./the_dir/Image.jpg"; 
$allowedfiles["image2"] = "./the_dir/Image2.jpg"; 

function getImage($path) { 

    echo file_get_contents($allowedfiles[$path]); 
} 
getImage($_REQUEST['img']); 
?> 

そして、ちょうど使用中に次のように行うことができます。

<img src="imgHandler.php?img=image1" /> 

これをだろうキャッシュを妨げず、私が前に提示した他の解決策よりもずっと安全です。

+0

これはまったく良いことではありません。それはキャッシングを防ぎ、IE <8で動作せず、IEでさえも(IIRC)32キロバイトに制限されています。 –

+0

私の答えはIEでチェックされ、正しくキャッシュされました – NoLifeKing

+0

公正で十分ですが、これにより、プロテクトされたディレクトリ(またはPHPが読み込み権限を持っているサーバ上の他のファイル)、つまり恐ろしいセキュリティホールから* anyリソースを取得することができます。例えば、許可されたファイルの配列 –

関連する問題