1

有很多关于目录结构的文档,但其中大部分是关于 MVC 目录结构的。但是如果我们不想使用任何框架或 MVC 怎么办?

  • 有人说“无需移动到公共目录之上,密码保护就足够了(第一种选择)”
  • 有人说“将所有重要文件从 public_html 中取出(第二个选项)”
  • 有人说“只将 index.php、css 和 js 文件放在 public_html 中(第三个选项)”

我真的很困惑。

第一个选项:

/public_html
   /css
   /images
   /libs
 index.php
 profile.php
 search.php

第二种选择:我仍然可以使用 ww.mysite.com/index.php、ww.mysite.com/profile.php .. 链接结构

/libs
/public_html
      /css
      /images
    index.php
    profile.php
    search.php

第三个选项:我的链接将是这样的:ww.mysite.com/index.php?view=search

/view
  -profile.php
  -search.php   
/libs
/public_html
    /css
    /images
  index.php

哪一个是最佳实践?目录结构对安全性重要吗?谢谢大家的帮助!

4

2 回答 2

5

我认为第三种选择是最好的,但如果进一步,我会扩展(见下文)。如果可以直接从 Internet 访问文件,则它可能会在出现问题时提供信息。

在第一个和第二个选项中,如果 mime 类型设置错误或由于某些其他原因 PHP 不解析文件,它通常会显示为text/html纯文本或纯文本。在第一个和第二个选项中,这意味着有人可能会获取数据库登录等信息。

我通常将其设置为类似于选项三,但将所有内容传递给另一个索引文件,并且不要使 URI 与文件匹配view=search表示search.phpview文件夹中获取文件。我不知道这个设置,但这是个人品味。

我的设置看起来像这样

/private
    /view
        -profile.php
        -search.php
    /libs
    -index.php
/public_html
    /css
    /images
    -index.php  

public_html/index.php如果它以纯文本形式传递,则只是传递给私有含义,除了您的文件存储在另一个目录中之外,它不提供任何信息。所有处理由private/index.php

<?php

    require_once('../private/index.php');

即使存在配置错误,我也从未发现此设置存在严重问题。

于 2013-02-24T05:44:23.220 回答
2

关于文件夹结构,它与 MVC 或使用框架或其他任何东西无关。不在公共目录中的文件(理论上)不能被用户直接访问。MVC 框架选择该文件结构,因为它是一种很好的做法,这就是它们的目的,教育程序员了解良好的做法。

拒绝使用框架就是拒绝自学好的实践,因为最臭名昭著的框架通常是由经验丰富的程序员设计的。

i did not see your code but if you are allowing direct php file fetching based on the query parameters of the request then you are in trouble(from a security perspective). That's why frameworks implements a front controller-pattern,controllers and routers, to decouple php file hierarchy from the way url are requested.

于 2013-02-24T05:52:27.640 回答