保护PHP文件

时间:2009-09-09 19:51:25

标签: php security encryption

大家好,感谢大家阅读我的问题。

我已经在PHP网络程序上工作了一段时间,并且想知道我应该采取什么措施来保护源,然后再把它放在实时服务器上。源不是分发的,它是通过网站访问的(用户登录网站使用它)。

首先,我想保护源php文件不被发现和下载。我没有使用任何框架,只是php和所有文件都在主目录中作为index.php。我四处看看,似乎robots.txt对于隐藏并不是很有效。我发现了一些人推荐.htaccess的帖子,但我经常认为这是用密码保护目录中的文件,所以不确定是否有办法让htaccess适合网络应用。

其次,我想在有人访问它们的情况下保护源文件(找到并下载它们或者可以随时访问服务器的sys管理员)。我想过像ioncube这样的源码加密。我的主人还有GnuPG [我不熟悉它,与ioncube相比有什么想法吗?]

我不熟悉源代码保护,所以任何想法都会很好,当然非常感谢你:)。

3 个答案:

答案 0 :(得分:3)

只需确保您的网络服务器设置正确处理.php个文件,并且所有文件都具有正确的.php扩展名(不是.php.inc或类似的)

只要您的服务器执行PHP,就没有人可以下载其源代码(忽略代码中的任何安全漏洞,这是一个不同的主题)

曾经有一段时间在mystuff.php.inc的行中命名包含的文件很常见 - 这是一个坏主意。假设您的站点位于“example.com”,并将数据库配置存储在config.php.inc中 - 如果有人猜到此URL,他们可以请求http://example.com/config.php.inc并以纯文本格式登录数据库。

将配置和其他库存储在一个目录bisko answered中是个好主意 - 所以你有一个类似的目录结构。

/var/example.com:
    include/
        config.php
        helper_blah.php
    webroot/
        index.php
        view.php

这样,即使您的Web服务器配置搞砸了,并开始以纯文本形式提供.php文件,也会很糟糕,但至少您不会向全世界宣布您的数据库详细信息。

至于加密文件,我认为这不是一个好主意。文件必须未加密到Apache(或您正在使用的任何服务器)才能访问它们。如果Apache可以访问它,那么你的系统管理员也可以..

我认为加密不是解决不值得信任的系统管理员的问题。

答案 1 :(得分:0)

您的第一点,那就是Web服务器安全性,您应该在serverfault上寻求帮助。基本上,您可以使用安全/锁定目录,或通过Web服务访问虚拟目录中的文件。

对于你的第二点,你会使用obfuscator来保护你的来源,但请记住,如果他们获得了这个文件,你只能做很多事情来保护它。如果他们真的感兴趣,他们会得到他们想要的东西。

答案 2 :(得分:0)

您应该采取的第一步是从网站根目录中取出所有不必要的文件,并将它们放在其他地方,只留下从网络上调用的文件。

例如,如果您有此设置:

 /var/htdocs/mysexydomain.com/root/config.php
 /var/htdocs/mysexydomain.com/root/db.class.php
 /var/htdocs/mysexydomain.com/root/index.php
 /var/htdocs/mysexydomain.com/root/samplepage1.php

将所有文件放在上面一层,这样就可以了

 /var/htdocs/mysexydomain.com/includes/config.php
 /var/htdocs/mysexydomain.com/includes/db.class.php #see the includes dir? :)
 /var/htdocs/mysexydomain.com/root/index.php
 /var/htdocs/mysexydomain.com/root/samplepage1.php
相关问题