Webディレクトリ内の画像を直接参照しないようにするにはどうすればよいですか?
-
03-07-2019 - |
質問
アクセスするにはログインする必要がある画像ギャラリーサイトを作成しています。サイトはセッションを使用して、ユーザー名とパスワードを追跡します。ログインしたユーザーは、画像を検索して結果を確認できます。おそらく、これは、Webディレクトリに画像を配置することを意味します。ログインしていない人がこのディレクトリの画像を直接参照できないようにするにはどうすればよいですか?
これはMySQLベースのPHPベースです。
解決
リファラーヘッダーを確認し、サイトからのものであることを要求します。 Cookieが送信されること(ログインしていること)も確認できます。
あなたの最善の策は、PHPがWebディレクトリ外の場所から画像を取得することです。
また、コメント文字列をチェックしてください:mod_rewriteを使用すると、これをすべてApacheから直接実行できます。
他のヒント
直接Urlからアクセスできないフォルダーに画像を入れ、プログラムに画像を直接提供させる
画像を閲覧可能なディレクトリに置かないでください。いっそのこと、あなたのwebrootの外に保存します。ユーザーが検証および検証された後、要求された画像を読み込み、ユーザーに送信するカスタムハンドラーを配置します。これにより、画像のホットリンクも防止されます。
画像をWebサイト外のフォルダーに配置し、プロキシページを使用して画像をブラウザーに送信します。 imgタグでurlとして使用するページを作成します。
getimage.php?id = 8783475
ページで、ユーザーがログインしていることを確認し、パラメーターから送信する画像を決定します。ページのコンテンツタイプを画像に一致するタイプ(「image / jpeg」など)に設定し、画像ファイルを読み取り、応答ストリームに直接送信します。
画像が大きすぎない場合、不正アクセスから画像を保護する非常にスマートな方法があります。 Outlook Expressの添付ファイルのエンコードと同様に、base64を使用して、SESSIONオブジェクトを使用するASPページ内にコードを配置できます。このテーマの詳細については、ASPのチュートリアルをご覧ください。 ユーザーがページにアクセスすると、aspコードはユーザーが認証されているかどうかを確認します。彼がスクリプトでない場合、画像を視覚化せずにページコードを中断します。 ユーザーが認証されると、スクリプトがページ全体をロードし、base64が可視画像に再構築されます。 ここでのコツは、プレーンな画像を含むディレクトリはないが、画像はページhtmlでエンコードされているため、スクリプトによってその場で再構築されるということです。 ディレクトリに画像がないので、単に存在しないため、誰もブラウザに直接画像を向けることができません。 このサイトを使用して画像をエンコードできます:
http://www.motobit.com/util/base64-decoder- encoder.asp
次に、「電話」する必要があります。このタグを使用してhtmlコード内の画像:
img src =" data:image / gif; base64、.................................. ............(ここに上記のサイトから取得したコードを配置します)...............
これで完了です!ユーザーがログインしていない場合、画像にアクセスできません。
他の人に画像ディレクトリへの直接アクセスを許可しないでください。
画像ギャラリーソフトウェアでユーザーに画像を転送します。必要な資格情報を確認します。