为什么CodeIgniter应用程序文件位于public_html文件夹中?

时间:2009-11-30 21:17:47

标签: php security apache codeigniter

公共视图中的所有文件都不是坏事吗?

/system/application/config/database.php等内容当然不应公开显示!

6 个答案:

答案 0 :(得分:26)

CodeIgniter的开发人员EllisLabs以这种方式设置了框架以便于使用。这意味着希望尝试框架的人不必在其服务器上摆弄任何权限设置。

当然在生产服务器上,你是绝对正确的,将你的PHP文件放在公共HTML文件夹中并不是一个好主意。

组织文件夹的更好方法是:

    • code_igniter
      • application_folder
        • 配置
        • 控制器
        • 模型
        • ...
      • system_folder
    • 的public_html
      • CSS
      • JS​​
      • 图像 的index.php htaccess的

此处唯一的其他变化是将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)。