【问题标题】:Is $_SERVER information sensitive?$_SERVER 信息是否敏感?
【发布时间】:2013-03-09 06:58:16
【问题描述】:

我正在我的 php 应用程序中编写一个错误提交类。我想在抛出异常时捕获整个$_SERVER,如果用户决定提交错误报告,请将$_SERVER 数组与其他有用信息(如问题描述、时间等)一起存储在数据库中。

我计划将捕获的$_SERVER 传递给$_SESSION 中的错误报告表单,但我担心如果我这样做,我会暴露可用于利用我的系统的数据。命名一对:

  • SERVER_SOFTWARE
  • DOCUMENT_ROOT

我是否将自己置于危险之中?

【问题讨论】:

    标签: php security session


    【解决方案1】:

    我认为这样的课程没有意义。
    为什么用户干预,如果您的代码可以自动、安全和准确地存储所有相关信息?

    为什么您不能在抛出异常时在异常处理程序中记录所有相关信息?

    从字面上回答您的问题 - 是的,某些服务器信息被视为敏感信息。
    虽然我认为没有办法公开它,除非您对错误报告的想法是要求用户通过他们自己的电子邮件发送报告文本。

    【讨论】:

    • 不知道他会不会因为某种原因发给客户。
    • 如果一个错误在报告一个月后才得到解决,并且由于大小/过期而导致日志文件被清除,该怎么办?这就是为什么我希望将相关信息存储在比日志文件更永久的地方。我还打算为客户制作一个漂亮的错误跟踪器 UI。
    • @TimeTravelMishap 为什么不创建一个日志函数,如果大于 x 大小重命名日志文件并创建一个新日志
    【解决方案2】:

    该类不是必需的。

    改为将此模板用于您的脚本:

    try {
        // You usual script here - but do not use die - use throw new Exception(...)
        // Could use include directive for example
    
        // Of course you may need to re-throw some exceptions
    
    } catch (Exception $e) {
        // Here you can record the fault (i.e. details of the exception $e,
        // server variables $_SERVER, S_SESSION and the like
    
        // Now give the user the internal server error and a pretty message saying
        // something along the lines that you are sorry and it is not their fault.
    }
    

    此模板不会将您网站的任何内部运作方式暴露给远程客户端 - 没有安全隐患。

    【讨论】:

    • 必须使用异常处理程序。
    • @YourCommonSense - 代码最终会捕获所有异常。您可以修改它(我过去做过)以捕获特定异常并记录错误并采取其他措施(例如,如果无法连接到数据库给某人发送电子邮件)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2012-12-26
    • 2013-01-24
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多