为什么告诉服务器将HTML解析为PHP是个坏主意?

12 html php security .htaccess parsing

您知道可以使用.htaccess使服务器将HTML页面解析为PHP(在HTML文档中执行PHP代码)吗?

好吧,有人说这样做很糟糕.为什么?

有些人还说它会在您的应用程序中打开一个安全漏洞.怎么样?

在文档到达浏览器之前,源代码仍然被删除,因此不能对未经授权的源代码进行访问,对吗?

sar*_*old 13

让我先从一个小故事开始:当我是Linux发行商的安全联系人时,PHP安全团队要求Linux供应商停止调用解释器崩溃安全漏洞,即使PHP解释器在Web服务器运行(例如,mod_php在Apache).(当时,每周大约发现一次翻译崩溃.)

对他们进行了一些谈话,让他们真正说服我们提供正在运行的PHP代码的人是完全信任的,并且任何控制脚本可以从解释器执行操作的任何尝试被误导了 - 如果有人想出如何使解释器崩溃为了解决它试图施加的限制(例如整个愚蠢的安全模式堆垃圾),这不是一个安全漏洞,因为脚本的安全执行不是 PHP解释器的目标 - 它从来没有,也从来没有将会.

我对讨论的最终结果非常满意 - 它清楚地定义了PHP的安全目标:您应该只允许执行100%完全信任的PHP代码.如果您不信任它,则不要运行它.就这么简单.

无论是口译员提供的操作系统资源可以和公平的游戏,无论脚本是否利用了解释错误或少了点什么意外.

因此,请不要在您的网络服务器上下文中执行随机代码,除非您真正想要这样做.

请使用最小权限原则来指导每个程序可用的资源.

考虑使用强制访问控制工具(如AppArmor,SELinux,TOMOYOSMACK)来进一步限制您的程序可以做什么和不能做什么.我从2001年左右开始从事AppArmor项目,并且相当有信心,通过一天的努力,大多数系统管理员可以通过AppArmor以有意义的方式增强他们的站点安全性.请评估几个选项,因为不同的工具是围绕不同的安全模型设计的 - 一个或另一个可能更适合.

但无论你做什么,请不要以不必要的方式运行你的服务器,通过额外的向量来打开它.


Pau*_*aul 8

主要问题是如果您将代码移动到另一台服务器或让其他人使用您的代码,服务器设置或.htaccess文件,您的html页面可能会被PHP解释器停止解析.

在这种情况下,PHP代码将提供给浏览器.