公共视图中的所有文件都不是坏事吗?
/system/application/config/database.php等内容当然不应公开显示!
答案 0 :(得分:26)
CodeIgniter的开发人员EllisLabs以这种方式设置了框架以便于使用。这意味着希望尝试框架的人不必在其服务器上摆弄任何权限设置。
当然在生产服务器上,你是绝对正确的,将你的PHP文件放在公共HTML文件夹中并不是一个好主意。
组织文件夹的更好方法是:
此处唯一的其他变化是将index.php的第26行更改为:
$system_folder = "../../code_igniter/system-folder";
答案 1 :(得分:6)
您可以将以下规则添加到.htaccess文件中,以进一步保护系统和应用程序目录不被查看(发送403 Forbidden错误):
# Protect application and system files from being viewed
RewriteRule ^(application|system) - [F,L]
答案 2 :(得分:2)
有了这个结构:
/application
/system
/public
index.php
您可以更改public/index.php
这两个设置,然后就完成了
$application_folder = '../application';
$system_path = '../system';
答案 3 :(得分:1)
Jon Winstanley的回答很完美, 如果有的话,也不要忘记保护文件上传文件夹。我通过将它移到公共根目录之外来做到这一点,并使用下面的代码获取图像:
<?php
// $details = getimagesize($_GET["path"] . '/' . $_GET["image"]);
$details = getimagesize($_GET["path"] . strip_tags($_GET["image"]));
header ('Content-Type: ' . $details['mime']);
readfile($_GET["path"] . strip_tags($_GET["image"]));
exit;
?>
答案 4 :(得分:0)
从浏览器访问/ system /中的文件不会泄露任何敏感信息,因为将解析PHP并且不会从这些文件输出任何内容(CI系统文件甚至可以检查是否已定义变量以指示该文件未被直接访问。)
尽管如此,你应该将整个系统文件夹安装在web root之上。
答案 5 :(得分:0)
您始终可以将系统目录放在公共目录之外。不要忘记更新前端控制器内的路径(index.php)。