如何保护PHP配置文件?

4
我正在开发一个PHP项目,为其他程序员设计模板引擎。这个想法很简单:有一个模板文件夹和一个页面文件夹,php会获取模板并将当前url中的页面插入到其中。几年前我完成了这个项目,但当时没有使用面向对象编程方法。现在我想用面向对象的方式来实现。
我遇到的问题是关于配置的。在原始系统中,我有一个PHP文件,其中包含硬编码的配置(包含包含、javascript、页面等文件夹的名称)。在新系统中,我考虑使用XML存储这些数据,但问题是,在Stackexchange上搜索后,我发现了这个问题,如果我理解正确,如果我使用重写解决方案,甚至PHP脚本也无法访问它,因此我无法防止配置文件被直接读取到浏览器中。
我该如何处理这个问题?是否有比使用XML更好的解决方案?我还避免使用数据库,因为这太简单了,不需要涉及mysql连接等。我相信有一种方法可以使XML仅从服务器内部可读,但我不确定是否这是最好的解决方案。
有人能告诉我如何在这种情况下继续吗?
非常感谢!

4
文件系统包含的内容不受Web服务器重写的影响,因此您在这方面是安全的。您还可以将配置文件保留在文档根目录之外。 - Orangepill
如果数据库是一个选项,那么请探索一下这个选项。我知道有一些应用程序只是为了一些运行时配置而连接到数据库。 - Daryl Gill
1
使用不是 .php 格式的“配置文件”时要小心。如果直接访问此文件,客户端将看到整个内容,包括数据库密码和您可能在其中拥有的所有其他敏感参数。我根本不建议您这样做,即使您已经配置了某些内容来保护其访问。当涉及到安全性时,始终最好结合尽可能多的技巧,以确保即使某些内容无法保护它,访问限制也不会被绕过。 - Havenard
@Havenard,你说得对。我再考虑了一下,我认为最好的方法是将配置保存在php文件中,以避免这种问题发生。感谢你的建议! - user1620696
1个回答

7
最简单的解决方案是将XML文件放在比/htdocs/或/www/目录更高的目录中。这样PHP仍然可以访问,但HTTP连接不行。
如果您希望使该文件对某些外部HTTP请求可用,则可以使用.htaccess文件来保护目录,但我不建议这作为企业级解决方案。或者,您可以将文件的chmod设置为66(4)(不是5…抱歉),这应该足以限制文件访问权限。

1
chmod 664 可能是最好的选择。我认为配置文件不需要可执行权限。 - DeeDee
1
+1. 在网站根目录之外。如果您不希望某个文件可以通过http直接访问,则将其放在无法通过http访问的位置即可。就这么简单。 - Spudley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接