禁用对包含文件的访问

时间:2011-10-10 15:53:43

标签: php include http-status-code-404

我有一个小问题..

我想禁用对包含文件的直接访问。 (例如header.tpl.php,footer.tpl.php,confic.inc.php,db-connect.inc.php等。)

但首先让我解释一下我想做什么 我希望所有人都允许访问我所包含的文件(index.php)并禁用带有404标题的文件以便直接访问。

现在我发现了一些很酷的php片段并对其进行了修改(404标题和404包含)

我的index.php中的

就是这段代码:

define('MY_APP',true);
我的模板文件中的

就是这段代码:

if(!defined('MY_APP')) {
header('HTTP/1.1 404 Not Found');
include('./../error/404.php');  
die; }

您是否看到此代码有任何安全性或其他问题?

最好的问候 bernte

3 个答案:

答案 0 :(得分:5)

  

您是否看到此代码有任何安全性或其他问题?

如果重新配置服务器以使.php不再执行,则可以查看其源代码。

但接下来你的方法是一种非常常见的方法。但是error/404.php可以包含header('HTTP/1.1 404 Not Found');行,因此您无需为每个文件重复此行。 die;语句也是如此。

在每个图书馆/模板等文件中:

require('../error/include_file.php');

include_file.php

if(!defined('MY_APP'))
{
    header('HTTP/1.1 404 Not Found');
    include('404.php');  
    die; 
}

对您的设计可能更好。不要重复那么多。

答案 1 :(得分:1)

为什么不把它放在public_html文件夹上面或者你用作默认html文件夹的任何内容,并包含在../../中。然后它将可用于脚本,但公众将获得未找到的默认404 /文件。我使用包含密码的配置文件来执行此操作,因此没有公众可以访问它们。

答案 2 :(得分:1)

if (basename($_SERVER['SCRIPT_FILENAME']) == basename(__FILE__))
{
    //header("Location: index.php");
    exit("NOT ALLOWED");
}