1

.htaccess ファイルを使用して、1 つまたは複数のファイルへのアクセスを制限したい。基本的に、ファイルへの直接リンクを使用してファイルをダウンロードすることはできません。ただし、ファイルは私の Web サイトからアクセスできる必要があります。

たとえば、Presentation.ppt というファイルがあるとします。訪問者が自分の Web サイトからアクセスできるようにしたいのですが、直接リンクを使用してダウンロードまたはアクセスしようとすると、サーバーは要求を拒否する必要があります。

.htaccess を使用してそれを行うことは可能ですか?

前もって感謝します、

4

4 に答える 4

1

すべての IPA のディレクトリへのアクセスを拒否できますが、サーバーは次のとおりです。

<Directory /dir/of/presentation>
    Order Allow,Deny
    Allow from 127.0.0.1
    Deny from All
</Directory>

あなたが指摘したように、そのワンクはうまくいきます。

/dir/of/presentation/* を禁止されたページにマップするルールで Mod Rewrite を使用するのはどうですか。そうすれば、直接リンクは機能しません。へのリクエストhttp://site/content/presentation.ppt
がリダイレクトされる可能性がありますhttp://site/forbidden.html

内部的には、http://authorizedRequest/presentation.pptマップへのリンクを作成できますhttp://site/content/presentation.ppt

それはあいまいさによる単なるセキュリティです。誰かがあなたの「秘密の」URI をブラウザに直接入力するのを防ぐことはできません。

于 2012-09-28T20:00:33.320 に答える
1

たとえば、Presentation.ppt というファイルがあるとします。訪問者が自分の Web サイトからアクセスできるようにしたいのですが、直接リンクを使用してダウンロードまたはアクセスしようとすると、サーバーは要求を拒否する必要があります。

.htaccess を使用してそれを行うことは可能ですか?

それは可能ですが、それを回避する方法があります。ブラウザから送信されたリファラーと照合する必要がありますが、誰でもそれを偽装でき、ブラウザがリファラーを含めないことを選択する場合もあります。

ファイルを保護しようとしている場合はPresentation.ppt、ドキュメント ルートの htaccess ファイルに次のルールを追加します。

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^(https?://)?your_website.com
RewriteRule ^/?path/to/Presentation.ppt - [L,F]

フォルダーを保護する場合は、次のようにします/path/images/

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^(https?://)?your_website.com
RewriteRule ^/?path/images - [L,F]
于 2012-09-28T22:02:25.500 に答える
1

回答ありがとうございます。私はあなたの提案をすべて試しましたが、それでもうまくいきませんでした。しかし、私はうまくいく解決策を思いつきました。

ステップ 1: Web サーバーのオプション インデックスを無効にするかオフにします。単語インデックスを削除して、他のすべてを同じにします。場合によっては、.htaccess ファイルを使用してこれを実行できる場合があります。.htaccess でこれを行うことができない場合は、サーバーで httpd.conf ファイルを探す必要があります。通常、etc/apache/httpd.conf または etc/httpd/conf/httpd.conf にあります。見つけたら、そこでこのオプションをオフにします。

ステップ 2: Web ページ フォルダー内にフォルダーを作成し、任意の名前を付けますが、簡単に推測できないようにするか、または明白であることを確認してください (Joe33CompanyOCT2MeBoss など)。次に、非表示にしたい、または訪問者から保護したいファイルをこのフォルダーに移動します。

ステップ 3: robot.txt ファイル内で、「Disallow yourfoldername」と入力して、すべてのボットまたはクローラーによるフォルダーまたはこのフォルダー内のファイルのインデックス作成を禁止します。

ステップ 4:次に、以下の同様のコードを使用して PHP ファイルを作成する必要があります。以下のコードはダウンロードを強制します。

        $File1 = 'http://yourwebsite.com/Joe33CompanyOCT2MeBoss/Presentation.ppt';
        header("Content-Disposition: attachment; filename=\"".basename($File1)."\"");
        header("Content-Type: application/force-download");
        ob_end_clean();
        flush();
        readfile($File1);
        exit;

このようにして、ファイルへの直接パスは訪問者から隠され、ファイルを直接ダウンロードできても、ファイルへの実際の URL を知らないだけです。これは、php コードを強制的にダウンロードしてもファイルへの実際のパスが明らかにならないためです。そのため、私の Web サイトへの訪問者は、直接ではなく、このファイルをダウンロードするために Web ページを経由する必要があります。

次のスタックオーバーフローの質問は、プログラミングの問題を解決するのに非常に役立ちました。ありがとう、

PHPでダウンロードを自動的に開始する方法は?

phpファイル強制ダウンロード

于 2012-10-02T14:45:26.460 に答える
0

HTTP_REFERER が正しくない場合、最も簡単な方法 (防弾ではありません) は、ユーザー エージェントをリダイレクトすることです。これは、サーバー構成で mod_rewrite を使用するか、(2 番目の選択肢) .htaccess のようなファイル内で使用できます。単純なホットリンク (URL でファイルを参照するリンク) を防ぐのに役立ちます。

moapaches d_rewrite の優れたドキュメントを読む必要があります。

于 2012-09-28T20:00:21.800 に答える