5

現在、webroot 内のフォルダーを使用して、ログインが必要なビュー (通常の html 画像ヘルパーを使用) に読み込んでいる画像とビデオを保存しています。

外部の訪問者が単にsite.com/img/photos/1.jpgURL を実行して画像にアクセスできないようにするにはどうすればよいですか? 私が理解していることから、メディアビューを使用して適切なビュー内に画像をレンダリングすることは実際にはできず、htaccess操作による解決策があるかどうかわかりません。

これのベストプラクティスはどれですか? おそらく、webroot 以外のフォルダーを選択するのが最善でしょうか (ただし、ファイルの保存部分が難しくなります)。

ポンチャが示唆したように、メインの.htaccessファイルをこれに編集してみました

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteCond %{HTTP_REFERER} !localhost
   RewriteCond %{REQUEST_URI} ^app/webroot/img/
   RewriteRule .* / [L,F]
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L] 
</IfModule>

しかし、リライトベースラインはサイト全体へのアクセスを禁止しているようで、それなしではimgアクセスに変化はないようです。

編集 2: webroot 内の htaccess の編集:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]

# this RewriteCond is needed to avoid rewrite loops
RewriteCond %{REQUEST_URI} !^/app/webroot/
RewriteRule (.*) app/webroot/$1 [L,R]


RewriteCond %{HTTP_REFERER} !127.0.0.1
RewriteCond %{REQUEST_URI} ^/app/webroot/img/
RewriteRule .* - [L,F]

</IfModule>
4

1 に答える 1

2

これは、Refererhttp ヘッダーがドメインを含むものに設定されているかどうかを確認し、そうでない場合は img/ フォルダーへのアクセスを拒否します。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !site.com
RewriteCond %{REQUEST_URI} ^img/
RewriteRule .* / [L,F]

: 誰かがあなたのコンテンツを盗もうとした場合、この保護を「破る」のは簡単ですが、すべての画像/ビデオを通過してアクセスする必要があるかどうかを確認する何らかのスクリプトを作成する必要なく、ホットリンクを防ぐことができます。承諾する。

編集:

あなたのウェブサイトが にない場合、/次の 2 つのオプションがあります。

  1. RewriteBaseサイトのベース URI を反映するように変更します (例: RewriteBase /app/webroot/)

  2. RewriteCondからのパスを反映するように変更します/(例RewriteCond ^app/webroot/img/)

他のルールがあるため、2番目のオプションが推奨されます

EDIT2:

あなたの場合、セット全体は次のようになります。

RewriteEngine on
RewriteBase /

# this RewriteCond is needed to avoid rewrite loops
RewriteCond %{REQUEST_URI} !^/app/webroot/
RewriteRule (.*) app/webroot/$1 [L,R]

RewriteCond %{HTTP_REFERER} !localhost
RewriteCond %{REQUEST_URI} ^/app/webroot/img/
RewriteRule .* - [L,F]
于 2012-06-26T11:44:18.030 に答える