阻止直接访问 php 包含文件
2022-08-30 06:32:31
我有一个php文件,我将像包含一样专门使用。因此,我想抛出一个错误,而不是通过键入URL而不是包含它来直接访问它时执行它。
基本上,我需要在php文件中进行如下检查:
if ( $REQUEST_URL == $URL_OF_CURRENT_PAGE ) die ("Direct access not premitted");
有没有一种简单的方法来做到这一点?
我有一个php文件,我将像包含一样专门使用。因此,我想抛出一个错误,而不是通过键入URL而不是包含它来直接访问它时执行它。
基本上,我需要在php文件中进行如下检查:
if ( $REQUEST_URL == $URL_OF_CURRENT_PAGE ) die ("Direct access not premitted");
有没有一种简单的方法来做到这一点?
将其添加到您只想包含的页面
<?php
if(!defined('MyConst')) {
die('Direct access not permitted');
}
?>
然后在包含它的页面上添加
<?php
define('MyConst', TRUE);
?>
对于通用的“在 Apache 服务器上运行的 PHP 应用程序,您可以或可能不会完全控制”情况,最简单的方法是将包含的内容放在目录中,并拒绝访问 .htaccess 文件中的该目录。为了节省谷歌搜索的麻烦,如果您使用的是Apache,请将此文件放在您不希望访问的目录中名为“.htaccess”的文件中:
Deny from all
如果您实际上可以完全控制服务器(现在甚至对于小应用程序也比我第一次写这个答案时更常见),最好的方法是将要保护的文件粘贴到Web服务器提供的目录之外。因此,如果您的应用程序位于 中,请将服务器设置为从中提供文件,并将包含的内容放入 中,因此实际上没有任何可以访问它们的URL。/srv/YourApp/
/srv/YourApp/app/
/srv/YourApp/includes