大家好,感谢大家阅读我的问题。
我已经在PHP网络程序上工作了一段时间,并且想知道我应该采取什么措施来保护源,然后再把它放在实时服务器上。源不是分发的,它是通过网站访问的(用户登录网站使用它)。
首先,我想保护源php文件不被发现和下载。我没有使用任何框架,只是php和所有文件都在主目录中作为index.php。我四处看看,似乎robots.txt对于隐藏并不是很有效。我发现了一些人推荐.htaccess的帖子,但我经常认为这是用密码保护目录中的文件,所以不确定是否有办法让htaccess适合网络应用。
其次,我想在有人访问它们的情况下保护源文件(找到并下载它们或者可以随时访问服务器的sys管理员)。我想过像ioncube这样的源码加密。我的主人还有GnuPG [我不熟悉它,与ioncube相比有什么想法吗?]
我不熟悉源代码保护,所以任何想法都会很好,当然非常感谢你:)。
答案 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