阻止直接访问 php 包含文件

2022-08-30 06:32:31

我有一个php文件,我将像包含一样专门使用。因此,我想抛出一个错误,而不是通过键入URL而不是包含它来直接访问它时执行它。

基本上,我需要在php文件中进行如下检查:

if ( $REQUEST_URL == $URL_OF_CURRENT_PAGE ) die ("Direct access not premitted");

有没有一种简单的方法来做到这一点?


答案 1

将其添加到您只想包含的页面

<?php
if(!defined('MyConst')) {
   die('Direct access not permitted');
}
?>

然后在包含它的页面上添加

<?php
define('MyConst', TRUE);
?>

答案 2

对于通用的“在 Apache 服务器上运行的 PHP 应用程序,您可以或可能不会完全控制”情况,最简单的方法是将包含的内容放在目录中,并拒绝访问 .htaccess 文件中的该目录。为了节省谷歌搜索的麻烦,如果您使用的是Apache,请将此文件放在您不希望访问的目录中名为“.htaccess”的文件中:

Deny from all

如果您实际上可以完全控制服务器(现在甚至对于小应用程序也比我第一次写这个答案时更常见),最好的方法是将要保护的文件粘贴到Web服务器提供的目录之外。因此,如果您的应用程序位于 中,请将服务器设置为从中提供文件,并将包含的内容放入 中,因此实际上没有任何可以访问它们的URL。/srv/YourApp//srv/YourApp/app//srv/YourApp/includes


推荐