
私が達成したいことは次のとおりです
ドメイン内のブラウザでのみファイル形式を表示(mp4
|| jpg
)してファイル形式を実行(|)できるようにしたいのですが、ブラウザのアドレスバーにURLを入力してファイルに直接アクセスしたくありません。ico
js
css
私が期待して行ったことは
PHPに慣れたら、$_SERVER['HTTP_REFERER']
次のURLを取得します。http://ドメイン名.xyz/main.phpしかし、同じことが本当かどうかはわかりません.htaccess
。.htaccess
では、HTTP_REFERER
このような正規表現パターンを使用します^https?://(www.)?domainname\.xyz/.*$
が、URLパターンを使用すると、https?://(www.)?domainname\.xyz/main.php
正確なURLをハードコーディングできます.htaccess
。これらのURLはエラーを引き起こす可能性があるため、サイトのコードに沿ってスクリプトに統合しました。私はhtaccess正規表現の専門家ではありません。
だから私は調査の結果、次の.htaccessを取得し、さまざまなサイトで追跡しました。
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(www.)?domainname\.xyz/.*$ [NC]
RewriteRule \.(jpg|js|css|mp4)$ - [NC,F,L]
また、さまざまなサイトで次のコードを試してみました。
SetEnvIf Referer "!^https?://(www.)?domainname\.xyz/.*$" localreferer
<FilesMatch "\.(jpg|js|css|mp4)$">
Require env localreferer
</FilesMatch>
上記のコードで現在起こっていることは次のとおりです。
上記の.htaccess
スクリプトを使用すると、ブラウザにファイル形式のみが表示され、mp4
ブラウザのアドレスバーのURLを介して直接アクセスできず、403 Forbidden
エラーが表示されます。
他のすべてのファイル形式はブラウザに表示/実行するか、URLを使用してアドレスバーから直接アクセスできます。
助ける
私はhtaccess、正規表現の専門家ではないので、これについてあなたの助けを求めています。数日間これを研究しましたが、まだ解決できませんでした。あなたの助けを借りて私の知識は成長します。
答え1
あなたが望むことは不可能です。 JavaScriptプログラムを実行したりCSS形式のファイルを適用したりするには、ブラウザからそのファイルをダウンロードする必要があります。それは正確にブラウザのURLバーに入力されたURLを開くのと同じメカニズムです。
また、データのインポート方法が異なりますが:ブラウザ持つ何らかの方法でデータを取得します。その瞬間はユーザーのコンピュータにあるので、サーバーの制御を受けません。
Webサイト、組み込みのJS、およびCSSがユーザーのコンピュータで実行されているプログラムであることを直視する必要があります。この目的のために、彼らはあなたのサーバーからこれらのものを取得します。この問題を解決する方法はありません。
答え2
ソリューションの開始パスを変更するには、最初の推測は正規表現を変更することです。
\.(jpg|js|css|mp4)($|\?|&)
情報が不足している(私の最後のコメントを参照)ここ)要求される実際のURIのみを推測できます。
最良の選択FileMatch
- バリエーション。
しかし、参考にしてください「リファラーによるブロック」は実際には安全ではありません。。ブラウザまたはそのプラグインは自動的にリファラを操作できます。
絶対的な保護を期待すれば、私ができることはこれだけだ。マーカス・ミュラーそしてラティエ絶対的な保護は不可能であることが事実です。ファイルの実際のURIを抽出する努力を強化したり、ユーザーアクセス制御または暗号化ソリューション(DRMなど)を介してターゲットを制限したりできます。