将PHP应用程序文件夹放置在public_html之上


Placing the PHP application folder above public_html

我在一个线程和一些框架中看到,建议使用以下结构。有人能从安全角度解释一下为什么吗(如果你能彻底解释一下,我将不胜感激)?这样做还有其他好处吗?

    • 应用程序
      • 应用程序文件夹
      • 配置
      • 控制器
      • 模型
    • public_html
      • css
      • js
      • 图像
      • index.php
      • .htaccess

编辑:

如果服务器被黑客入侵,这会有任何影响吗?

这个想法是,只有用户应该能够访问的东西才放在public_html中,这样,如果互联网上的随机用户猜测正确的URL,他们就无法访问你的代码或数据。

通常的方法是在应用程序中有一个公用文件夹,然后将其符号链接到public_html或下,而不是将应用程序实际拆分为两部分。

我在以前的项目中为一个客户将他们的配置文件放在public_html文件夹之外。这是可能的,但当包括PHP文件时,我只是做了这样的

<?php
require_once('/home/brandon/config/config.php');
?>

取而代之的是:

<?php
require_once('/home/brandon/public_html/config.php');
?>

我一直在努力解决这个问题。在管理大量网站时,我决定将php库放在公共文件夹下的子目录中,并在includes中使用相对路径引用它们。这样,我就不必更改任何路径来在我的开发服务器和生产服务器上运行/测试它们。

去年,我的一个客户网站开始反复遭到黑客攻击。黑客以某种方式访问了FTP帐户并插入了自己的文件(包括php),还替换了一些文件并删除了其他文件,并创建了目录。尽管将所有目录设置为755,将文件设置为644个排列,但所有这些都是如此。当然,一旦他们有了FTP帐户,游戏就结束了,再试一次。

据我所知,他们已经入侵该网站6次了。这是我的网站中唯一一个被黑客入侵的!我正在考虑是否有任何意义,将我的php库文件重新定位到公共文件夹之外(无论如何,对于这个网站)。我已经确认,这些文件都不能通过浏览器下载/查看(获取空白页面,空白查看源页面)。

我还使用SFTP、安全密码和防范SQL注入攻击。

黑客至少有一次使用第三方破解服务攻击过该网站。每次,他们都会对网站做一些不同的事情。此网站仅使用PayPal,因此不会在现场存储客户数据。他们已经替换了发送给PayPal的电子邮件地址,以识别将付款贷记到的卖家帐户,但客户似乎永远无法实际付款(黑客可能没有PayPal帐户)。

剩下的一种可能性是他们商店计算机上的密钥记录器。我将在几天后把它通过振铃器。

当然,托管提供商将与这个问题无关。他们进行了一次"扫描",只发现了黑客创建、替换或删除的21个脏文件中的5个(不包括目录)。他们一直告诉我要为"站点锁定"服务付费,这似乎完全没有用,完全是浪费钱。

我很想找到一本全面的"反黑客食谱",详细介绍共享托管情况下的安全性,并有很多好的例子。有这样的事情吗?