保护PHP文件不被其他网站调用

时间:2012-07-25 16:33:39

标签: php data-protection

我有一个网站从某些PHP文件中提取数据,以便在网站上显示。但是,为了保护我的数据以供其他人使用,我希望保护我的PHP文件被crawler,bot等调用以收集数据。

我通过检查引荐网址阻止了它,但这可以很容易地绕过。那么,有没有其他方法来保护我的数据。我希望只有我的网站可以调用这些文件。

谢谢!

4 个答案:

答案 0 :(得分:1)

在php文件的顶部添加Basic HTTP authentication

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();
}

答案 1 :(得分: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();
}

答案 2 :(得分:1)

  

我有一个网站从某些PHP文件中提取数据,以便在网站上显示。

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

答案 3 :(得分:0)

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

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

Cookie设置的最长时间限制为5小时,cookie在窗口关闭时销毁。这对我来说非常好。

请注意这部分是否有任何故障!!