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

时间:2013-07-24 03:01:22

标签: php security directory lamp

我在一个帖子中看到并在一些框架中看到,建议使用以下结构。有人可以解释为什么,在安全方面(如果你能完全解释它将不胜感激)?这还有其他优点吗?

    • 应用
      • application_folder
      • 配置
      • 控制器
      • 模型
    • 的public_html
      • CSS
      • JS​​
      • images
      • index.php
      • 的.htaccess

编辑:

如果服务器遭到入侵,这会产生什么影响吗?

3 个答案:

答案 0 :(得分:3)

我们的想法是,只有用户应该能够访问的内容放在public_html中,以便互联网上的随机用户无法访问您的代码或数据的随机部分正确的网址。

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

答案 1 :(得分:1)

我之前的项目中有一位客户将他们的配置文件放在public_html文件夹之外。这是可能的,但是当包含PHP文件时,我只是做了类似的事情

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

而不是:

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

答案 2 :(得分:0)

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

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

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

我也在使用SFTP,安全密码和防止SQL注入攻击。

黑客至少有一次使用第三方破解服务来访问该网站。每次,他们都会对网站做一些不同的事情。此站点仅使用PayPal,因此不会在现场存储客户数据。他们已经将发送给PayPal的电子邮件地址替换为卖家帐户的身份,以便将付款记入,但客户似乎无法实际支付(黑客可能没有PayPal帐户)。

剩下的可能性是商店电脑上的一个关键记录器。我会在几天之内通过铃声把它放进去。

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

我很想找到一份全面的“反黑客食谱”,它可以非常详细地解决共享主机环境中的安全问题,并且有很多很好的例子。有这样的事吗?