0

ユーザーが URL を入力して特定のディレクトリ内のファイルにアクセスできないようにしながら、PHP スクリプトがファイルにアクセスして変更またはダウンロードできるようにする方法はありますか?

言い換えれば、私は人々がhttp://www.mysite.com/securefolder/file1.pdfに入力するのを止めたいと思っています。多分それらを別のページか何かにリダイレクトします。

しかし、PHP スクリプトを使用してファイルをダウンロードして変更する必要があるため、ファイルを完全にロックしたくありません。

どんな助けでも大歓迎です、ありがとう

4

5 に答える 5

3

特定のファイルの特定の設定だけが必要な場合は、非常に単純なルールで十分です-

RewriteEngine on
RewriteRule ^/securefolder/file1.pdf$ access_denied.php

より良いアイデアは、保護されたフォルダー全体のルールを作成することです-

RewriteEngine on
RewriteRule ^/securefolder/.*$ access_denied.php

これを行う最後の (そしておそらく最善の) 方法は.htaccess、セキュリティで保護されたフォルダー内に追加のフォルダーを作成し、そのフォルダーへのすべてのアクセスを単純に拒否することです。この1行を配置します-

deny from all

すべてのソリューションで、外部リクエストについてのみ話しています。すべてのスクリプトと、スクリプト、ファイルなどへの内部パスはそのまま残り、.htaccessファイル内で定義したルールの影響を受けません。

于 2012-08-06T21:12:13.287 に答える
2

Web サーバー上のファイルへの直接アクセスを無効にし、PHP スクリプトからファイルを提供します (このマニュアル ページにいくつかのヒントがあります: http://www.php.net/manual/en/function.readfile.php )。ファイルシステムに直接アクセスしているため、Web サーバーのアクセス制限は PHP には影響しません。同様の質問があります:ダウンロード用のファイルを保護する

パフォーマンスが重要な場合は、ファイルを直接 (PHP をバイパスして) 提供するのに役立つほとんどの Web サーバー用のプラグインがあります。

于 2012-08-06T21:17:40.880 に答える
1

理想的なアプローチは、PHP スクリプトが PDF ファイルにディスク上でローカルにアクセスするか、http を介してリモートでアクセスするかによって異なります。

PHP スクリプトがディスク上でローカルにファイルにアクセスする場合は、ファイルを Web サイトのルート フォルダーの外に置くだけです。

PHP スクリプトが http を介してリモートでファイルにアクセスする場合、いくつかのオプションがあります。

  1. オリジン IP によるアクセス制限

  2. リソースをパスワードで保護し、https 経由で提供する

于 2012-08-06T21:12:34.880 に答える
1

ファイルが同じサーバー上にある場合は、それらを提供するためにダウンロードする必要はありません。ファイルシステムから読み込んで直接出力するだけです。

ただし、そうではなく、ファイルをダウンロードできるスクリプトが必要で、他のファイルを拒否する必要がある場合は、ディレクトリをパスワードで保護できます。

次に、たとえばcURLを使用してファイルをダウンロードするには、次のオプションを指定できます。

curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

詳しくは

于 2012-08-06T21:13:22.213 に答える
0

データ ファイルをパブリック Web スペースの外に配置します。PHP を使用してファイルを読み取り、サーブします。

ファイルをパブリックに提供する場合を除き、ソース ファイルを Web ホストの DocumentRoot 内に配置する必要はありません。

PHP スクリプトはローカル ユーザーとして実行されるため、Apache (または他の) Web サーバーの範囲外でもファイルを読み取ることができます。

于 2012-08-06T21:12:40.960 に答える