为什么我不应该把我的PHP文件放在public_html文件夹中


Why should I not put my PHP files in the public_html folder?

几天前有人批评我把我的应用程序脚本放在public_html文件夹中。在此之前,我认为755文件权限足以防止我的代码被读取而不是执行。

我不喜欢这样的想法,即现在我们的应用程序逻辑至少有一半以JavaScript的形式公开,并且它们来自公共文件夹。但是PHP脚本的真正威胁是什么?

区别通常在于 JavaScript 代码是不可信的代码(或者至少应该是,因为它在客户端上运行),而 PHP 代码通常被认为是可信代码(因为它运行在不能被用户直接干扰的服务器上)。

因此,在PHP

源代码中发现漏洞的人通常可以获得比发现JavaScript代码漏洞的人更大的权限,因为他们可以让PHP在服务器端运行某些东西。

现在,虽然通过隐蔽性实现安全性不应该是保护代码的主要手段 - 最好首先不要有安全漏洞 - 但让攻击者更容易找到以某种方式引入的漏洞通常也不是一个好主意。将内容排除在非脚本服务根目录之外有助于防止发生意外("哎呀,我不小心禁用了 PHP,每个请求页面的人都会获得源代码")。

此外,服务器端文件可能包含诸如配置数据之类的内容,这些数据不是公开的 - 内部网络地址,数据库信息等(尽管将凭据之类的内容与PHP代码分开也是一个好主意)。