我有一个小问题..
我想禁用对包含文件的直接访问。 (例如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答案 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");
}