Webサイト上の画像へのアクセスを制限する
質問
いくつかの画像を含むポートフォリオWebサイトを作成していますが、その一部は一般の人には見られたくないものです。誰かに「ログイン」できるユーザー名とパスワードをメールで送信すると思います。私の作品を見るために。
「画像の非表示」に対するさまざまなソリューションを見てきました。 phpのreadfileを使用する次のような行の問題。 .htaccessを使用する別の例も見ました。
phpのreadfile()を使用するか、表示にリダイレクトします画像ファイルですか?
画像の読み込みに時間がかかるように見えるため、readfileソリューションに夢中ではありません。CabelSasserのFancyZoomを使用したいので、画像に自由にアクセスする必要があります(彼のライブラリにはリンクが必要ですフルサイズの画像まで)、. htaccessを除外します。
私がやろうとしていることを要約する:
1)ユーザーが自分の画像を見たい人として自分自身を認証できるようにするサイトを提供します。 2)ランダムなWebユーザーがこれらの画像を見ることができないようにします。 3)FancyZoomを使用してサムネイルを拡大します。
これが最終的にどのテクノロジーを使用するかは気にしません-Javascript、PHPなど-最もクリーンで簡単なものは何でも
ところで、私はJava開発者であり、Web開発者ではないので、おそらく問題について正しく考えていません。
解決
画像へのリンクを提供する代わりに。適切なヘッダーと画像のコンテンツを自動的に提供するcgiスクリプトへのリンクを提供します。
例: image.php?sample.jpg
リンクの一部として既に認証されている(たとえば、セッションIDを渡す)ことを確認できます。
これはヘッダーの一部になり、画像データを追跡できます。
header('Content-Type: image/jpeg');
編集:高速にする必要がある場合は、phpではなくC / C ++で作成できます。
他のヒント
.htaccessの使用は、ウェブサーバー自体の機能が組み込まれているため、最も安全/シンプルなメソッドである必要があります。
あなたのニーズに合うかどうかはわかりませんが、 TinyWebGallery は、データベースがなしの小さなギャラリーアプリケーションです。
パスワードを介して異なるディレクトリへのアクセスを許可し、TinyWebGalleryが新しいdirs / picsをオンザフライでチェックするため、写真をファイルシステムに直接アップロードできます。サムネイルが生成され、ユーザーが写真を評価/コメントできるようになります(これを無効にできます)。
これは最小のツールではありませんが、apacheディレクティブを使用するよりもセットアップがはるかに簡単で、裸の画像のように見えます。
Nginx を使用している場合、セキュアリンクモジュール。