68

Apacheを使用していて、ローカルホストに次のような サンプルWebフォルダーがあります。

      http://localhost/test/

フォルダ内のファイルtest

     index.html  
     sample.jpg  
     .htaccess  

のサンプルソースindex.html

<html>
  <body>
    <img src="sample.jpg" />
  </body>
</html>

でウェブサイトを運営するとhttp://localhost/test/、ページに画像「sample.jpg」が表示されます。


問題:

  • http://localhost/test/sample.jpg画像がURLバーに直接表示されないようにしたい。

注: Firefoxを除くすべてのブラウザーでテストすると、以下のソリューションが機能することがわかりました。

4

7 に答える 7

112

次のことを試してください。

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg)$ - [F]

画像に直接アクセスした場合は403を返しますが、サイトでの表示を許可します。

注:画像を含むページを開いて、その画像のパスをアドレスバーにコピーすると、その画像が表示される可能性があります。これは、ブラウザのキャッシュが原因であり、実際には画像がサーバーから読み込まれていません( Davoから、以下の完全なコメント)

于 2012-04-19T21:07:50.947 に答える
23

rosipov のルールはうまく機能します。

私はライブ サイトで空白または特別なメッセージを表示するために使用します ;) ファイルへの直接アクセス試行の代わりに、直接見られないように少し保護したいと思います。403 Forbiddenより面白いと思います。

したがって、{gif,jpg,js,txt} ファイルへの直接リクエストを 'messageforcurious'にリダイレクトするという rosipov のルールを採用します。

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC] 
RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L]

セキュリティを念頭に置いて、xml や javascript などの CMS で認識可能なファイルへの直接アクセスを禁止するための丁寧な方法だと思います。メッセージフォーキュリアス」。

于 2013-03-27T20:33:16.133 に答える
10

あなたのコメントに基づいて、これが必要なもののように見えます:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC] 
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]

ローカルホストでテストしましたが、問題なく動作しているようです。

于 2012-04-19T21:05:55.597 に答える
8

まず、メインの apache の構成ファイル httpd.conf がある場所を見つけます。Debian を使用している場合は、次の場所にあります/etc/apache/httpd.conf。Vim や Nano などのファイル エディターを使用してこのファイルを開き、次のような行を見つけます。

Options Includes Indexes FollowSymLinks MultiViews

次に、単語インデックスを削除してファイルを保存します。行は次のようになります。

Options Includes FollowSymLinks MultiViews

完了したら、apache を再起動します (例: Debian では /etc/init.d/apache restart)。それでおしまい!

于 2012-06-14T06:47:20.267 に答える