映射只能访问Web服务器而不能访问其他用户

时间:2011-11-24 14:16:34

标签: php ajax chmod

在我的网站上,我使用了很多包含,大多数包含应该只能访问网络服务器而不能访问世界其他地方。因此,如果我在我的网站上的页面中包含“../include_map/file.php”,则不应该使用世界上其他用户的URL请求(“website.com/include_map/file.php”) 。是否有可能使用包含文件保护地图,以便只有网络服务器可以包含文件?

2 个答案:

答案 0 :(得分:2)

PHP可以包含服务器硬盘驱动器上任何地方(也就是非公共目录)的文件。

例如,如果您的htdocs位于/ var / www / domain / htdocs /中,您还可以包含位于/ var / www / domain / include_map中的文件,而不允许Web服务器从那里读取(如果配置正确) )。

然后,您可以使用www.yourdomain.com/../include_map/file.php进行测试以访问该文件。 如果您仍然可以像这样访问它,那么您的Web服务器配置需要引起注意,以防止其他人阅读您的日志和其他内容。

另一种方法是通过.htaccess或apache config拒绝访问目录。 php仍然可以包含文件,而用户无法从互联网访问它们。

在apache配置中你会做类似的事情:

<Directory /inlcude_map>
   Order Deny,Allow
   Deny from all
</Directory>

在.htaccess文件中你可以写

Order Deny,Allow
Deny from all

.htaccess文件应位于您要保护的目录中。请咨询您的服务器提供商,了解哪种方式最适合您。正如评论中所述,您必须先了解.htaccess是否适合您。

答案 1 :(得分:0)

你可以像zuloo说的那样做。如果你想在任何条件下都能使用它,你可以使用常量。

该文件包括:

define('IS_APP', true);
require_once('some/file/to/include.php');

// your code here

包含的文件:

if(!defined('IS_APP')) {
   die('No direct access');
}

// your code here