2012-03-06 7 views
0

基本的に、Apacheディレクトリ内のすべてのファイルは、イメージ以外はアクセスできません。画像はアクセス可能でなければなりませんが、ウェブサイトからロードされた場合に限ります。 Refererに基づいてApacheルールを設定すると、パスするのが非常に簡単です:http://www.mustap.com/phpzone_post_62_how-to-bypass-the-referer-se もちろん正しい選択ではありません。イメージのApacheディレクトリとセキュリティ

私のApacheのconfファイル:

<Directory /var/www/path> 
    Order allow,deny 
    Deny from all 
    Options -Indexes 
    # Check against the referer, first level check 
    SetEnvIf Referer domain1\.com domain1 
    SetEnvIf Referer domain1\.com domain2 
    <FilesMatch \.(jpg|jpeg|gif|png)$> 
     Order deny,allow 
     Deny from all 
     Allow from env=domain1 
     Allow from env=domain2 
    </FilesMatch> 
</Directory> 

どのように私は、DB内の画像を入れずにこの問題を解決することができますか?確実に知るために

おかげ

答えて

2

一つの方法は、要求された画像と、出力、それをチェックするためにreadfile()のようなものを使用してPHPスクリプトを介してすべてのあなたのイメージを実行することです。例えば

:site.com/image.php?name=logo.jpg

彼らは、それは彼らが要求していることを意味していない場合、ユーザーは、サイト上でセッションを持っている場合、スクリプトがチェックできます(クッキーが無効になっていない限り)最初にサイトを見ることなく

これはロード時間を長くすることになりますが、実装する際のコストとメリットを考慮する必要があります。

+2

注意:site.com/image.php?name=../../../etc/passwd;) – ZiTAL

+0

ありがとう!私もこのリンクを見つけたので便利です: http://michael.theirwinfamily.net/articles/csshtml/protecting-images-using-php-and-htaccess – Daviddd

関連する問題