PHP 的魔法常量允许您访问诸如当前正在执行的 PHP 文件、当前函数的名称等信息。
虽然这些数据不是用户直接输入的,但它肯定会受到用户输入的影响(例如:通过访问特定路径来影响__dir__
和__file__
等),但是在大多数情况下,远程用户输入不可能准确地影响这些变量.
例如,如果您要访问example.com/<script>window.alert("XSS");</script>
,这不会导致__file__
该服务器上的变量包含恶意 JavaScript。相反,它将包含您的 404 ErrorDocument 的路径(假设 XSS 示例不是您服务器上的实际路径)。
恶意数据还有哪些其他方式可以进入这些变量?
我是否遗漏了与 PHP 魔术常量相关的任何其他安全注意事项?
就上下文而言,这是关于服务于静态 PHP 页面的 Apache 服务器,站点上没有额外的用户输入(例如:表单、文件上传、cookie 等)。