2

I have a website which fetches data from some PHP files to display it on the website. However, to protect my data to be used by other people, I wish to protect my PHP file being called by crawlers, bot etc to gather data.

I have prevented it by checking referral URL , but that can be easily by-passed. So, is there any other way to protect my data . I wish that only my website can call to those files.

Thanks !!

4

4 回答 4

1

在 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();
}
于 2012-07-25T16:39:15.517 回答
1

如果您有 Apache Web 服务器并在站点的根目录中创建一个 .htaccess 文件(没有后缀的点 htaccess)。

尝试使用以下语法来阻止对特定文件类型的访问:

<FilesMatch "\.(htaccess|htpasswd|ini|php)$">
 Order Allow,Deny
 Deny from all
</FilesMatch>

另一种方法是在所有非索引 php 文件中,您可以包含以下内容:

在 index.php 中,添加如下访问值:

$access = 'my_value';

在每个其他文件中,在 php 回显单个字节之前包含此检查:

if(empty($access)) {
    header("location:index.php"); 
    die();
}
于 2012-07-25T16:39:37.063 回答
1

我有一个网站,它从一些 PHP 文件中获取数据以将其显示在网站上。

将包含数据的文件移到文档根目录之外。假设 PHP 文件只是被 docroot 中的另一个访问。

于 2012-07-25T16:51:50.823 回答
0

正如 DaveRandom 所建议的,我最终使用了基于 cookie 的身份验证技术来避免其他网站调用 PHP。

服务器首先为每个有效客户端设置一个访问代码。在我的 PHP 文件的开头检查此访问代码。

Cookie 设置的最大时间限制为 5 小时,并且 cookie 在窗口关闭时被销毁。这对我来说很好。

请指出这部分是否有任何故障!

于 2012-07-27T03:18:30.853 回答