いくつかのPHPファイルからデータをフェッチしてWebサイトに表示するWebサイトがあります。ただし、他の人が使用するデータを保護するために、クローラーやボットなどから呼び出されてデータを収集するPHPファイルを保護したいと思います。
紹介URLをチェックして防いでいますが、簡単にバイパスできます。だから、私のデータを保護する他の方法はありますか?私のウェブサイトだけがそれらのファイルを呼び出すことができることを望みます。
ありがとう !!
いくつかのPHPファイルからデータをフェッチしてWebサイトに表示するWebサイトがあります。ただし、他の人が使用するデータを保護するために、クローラーやボットなどから呼び出されてデータを収集するPHPファイルを保護したいと思います。
紹介URLをチェックして防いでいますが、簡単にバイパスできます。だから、私のデータを保護する他の方法はありますか?私のウェブサイトだけがそれらのファイルを呼び出すことができることを望みます。
ありがとう !!
phpファイルの先頭に基本HTTP認証を追加します。
if ( !isset($_SERVER['PHP_AUTH_USER']) ||
!isset($_SERVER['PHP_AUTH_PW']) ||
!($_SERVER['PHP_AUTH_USER'] == 'user' && $_SERVER['PHP_AUTH_PW'] == 'pw'))) {
header('WWW-Authenticate: Basic realm="Mirkwood"');
header('HTTP/1.0 401 Unauthorized');
die();
}
Apache Webサーバーがあり、サイトのルートディレクトリにある場合は、.htaccessファイル(サフィックスのないドットhtaccess)を作成します。
特定のファイルタイプにアクセスできないようにするには、次の構文を試してください。
<FilesMatch "\.(htaccess|htpasswd|ini|php)$">
Order Allow,Deny
Deny from all
</FilesMatch>
もう1つの方法は、インデックス以外のすべてのphpファイルに、次のようなものを含めることができます。
index.phpで、次のようなアクセス値を追加します。
$access = 'my_value';
他のすべてのファイルでは、phpによって1バイトでもエコーアウトされる前に、このチェックを含めてください。
if(empty($access)) {
header("location:index.php");
die();
}
いくつかのPHPファイルからデータをフェッチしてWebサイトに表示するWebサイトがあります。
データを含むファイルをドキュメントルートの外に移動します。PHPファイルがdocroot内の別のファイルによってアクセスされていると仮定します。
DaveRandomが提案したように、私はついにCookieベースの認証技術を使用して、他のWebサイトによるPHPの呼び出しを回避しました。
サーバーは最初に、有効なクライアントごとにアクセスコードを設定します。このアクセスコードは、PHPファイルの先頭でチェックされます。
クッキーは最大5時間の制限時間に設定されており、ウィンドウを閉じるとクッキーは破棄されます。これは私にとってはかなりうまく機能しています。
この部分に不具合があればお知らせください!!