disable_functions
允许禁用 PHP 中被视为“危险”的某些函数。然而,我发现很难掌握这样的功能假设了什么样的威胁模型。
如果您禁用某些功能来防止自己的应用程序代码受到攻击,那么这充其量只是一个用胶带解决方案来修补编写不佳的代码库。
另一方面,如果您使用
disable_functions
来限制 RCE 攻击的范围,那么这是毫无意义的努力,因为在很多情况下,您的数据可以使用本文中不存在的“简单”功能来窃取黑名单。
在我看来,定义这样的黑名单只会提供一种错误的安全感。如果 RCE 攻击成功,那么您的执行上下文已经被破坏,将某些功能列入黑名单感觉像是一场失败的战斗。
我所缺少的
disable_functions
有任何真正的安全优势吗?
以下是可能的用例:
配置共享主机以防止执行任意操作系统命令、操纵文件路径等。示例:
exec, shell_exec, passthru, popen, link
。或者临时阻止,例如,当 mail
函数的使用违反了允许的行为算法时。
为了简化组织中的代码控制,当更容易禁止使用功能而不是监视它们(或为此编写自动规则),然后花时间在代码中重写它们时。
满足某些安全合规性(PCI DSS、SOX、HIPAA 等)。支持您安全的论据越多,就越容易获得所需的状态。
也许有人喜欢禁止自己使用某些东西。各种形式的自由,你知道;)