3

我正在查看一些(PHP)框架,我刚刚在 Laravel 文档中注意到了这一点:

与大多数 Web 开发框架一样,Laravel 旨在保护您的应用程序代码、捆绑包和本地存储,方法是仅将必须公开的文件放置在 Web 服务器的 DocumentRoot 中。这可以防止某些类型的服务器错误配置使您的代码(包括数据库密码和其他配置数据)可以通过 Web 服务器访问。最好是安全的。

我对 CodeIgniter 和 CakePHP 比较熟悉,据我所知,这两个框架都不做这个。您真的应该将其拆分并将您的核心逻辑放在 webroot 之外吗?根据我的经验,大多数客户使用共享主机并且无法更改他们的 VirtualHost 设置。

你可能会做什么样的错误配置来输出你的密码?开发时,你真的应该这样做吗?

4

2 回答 2

0

CakePHP 支持这一点 - 请参阅部署

CakePHP 应用程序应该将文档根设置为应用程序的 app/webroot。这使得应用程序和配置文件无法通过 URL 访问。

于 2013-08-02T21:07:50.377 回答
0

是的,只保留那些应该在 DocumentRoot 中公开访问的文件是Web 应用程序安全性的最佳实践。考虑:

  • 每个私有文件都需要使用 Web 服务器配置的规则来明确阻止它。
  • 任何向项目添加文件的人都需要考虑 Web 服务器安全设置。只需将文件保存在单独的目录中,就可以清楚地看出什么是公开的。并且开发人员不需要更改安全配置。
  • 无论如何,分离可执行代码和静态文件是一个好习惯。
  • 不阻止对 PHP 脚本的访问可能会导致意想不到的后果。例如,当您在命令行手动运行时,您可能有一个脚本来更新一些数据库记录,因此只需猜测脚本名称的人就可以在互联网上运行它。
  • 如果真正的应用程序逻辑在其他地方,那么监视和清理写入公共目录的恶意代码会容易得多。有关示例,请参阅 Wordpress 中断。
于 2013-08-02T21:01:18.800 回答