【问题标题】:What are the security risks of using PHP magic constants?使用 PHP 魔术常量有哪些安全风险?
【发布时间】:2018-09-09 23:27:27
【问题描述】:

PHP 的magic constants 允许您访问诸如当前正在执行的PHP 文件、当前函数的名称等信息。

虽然这些数据不是直接用户输入的,但它肯定会受到用户输入的影响(例如:通过访问特定路径来影响__dir__和__file__等),但是在大多数情况下,远程用户输入不可能准确地影响这些变量。

例如,如果您要访问 example.com/<script>window.alert("XSS");</script>,这不会导致该服务器上的 __file__ 变量包含恶意 JavaScript。相反,它将包含您的 404 ErrorDocument 的路径(假设 XSS 示例不是您服务器上的实际路径)。

恶意数据还有哪些其他方式可以进入这些变量?

我是否遗漏了与 PHP 魔术常量相关的其他安全注意事项?

就上下文而言,这是关于服务于静态 PHP 页面的 Apache 服务器,站点上没有额外的用户输入(例如:表单、文件上传、cookie 等)。

【问题讨论】:

  • 不受用户输入影响,但__FILE__/__DIR__ 解析符号链接,因此可能会泄露有关服务器文件系统的信息。
  • 那么这些和$_SERVER['PHP_SELF']这样容易受用户输入影响的东西完全不同?
  • 不,在这方面更像$_SERVER['SCRIPT_FILENAME']。
  • 所以你是说$_SERVER['SCRIPT_FILENAME'] 很容易受到用户输入的影响?
  • 不,我是说__FILE__ 和$_SERVER['SCRIPT_FILENAME'] 一样,但它们确实解析了文件的绝对路径,这可能会显示有关服务器文件夹结构的信息。跨度>

标签: php security magic-constants


【解决方案1】:

没有安全风险。这些常量来自服务器数据(即您的 PHP 文件路径)。这些无法由最终用户控制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多