【问题标题】:phpspreadsheet use of the MD5 hashingphpspreadsheet 使用 MD5 散列
【发布时间】:2019-05-08 06:42:43
【问题描述】:

这个问题是为phpexcel/phpspreadsheet的开发者准备的。

我们目前正在使用我们网站上的库来生成 excel 文件(显然),并且目前正在获得 SOC2 认证;这要求我们将所有代码和第三方代码运行到安全扫描器中。

扫描器返回 36 个漏洞,所有这些漏洞都是“使用损坏或有风险的加密算法”;作为简单地使用 MD5 函数调用的结果。

所以我的问题是为什么使用 MD5 进行散列以及我们为什么要对它进行散列?如果我能更好地理解发生了什么,我可以尝试更改散列机制,或者至少解释一下为什么它确实不是安全风险。

【问题讨论】:

    标签: php phpexcel phpspreadsheet phpoffice


    【解决方案1】:

    正如 DFriend 已经指出的,在 PHPExcel/PHPSpreadsheet 中使用 md5() 不(有一个例外)用于加密目的。它用于生成准唯一哈希/校验和,以便快速比较对象值。

    其中一个例外是验证任何 Xls 密码,因为 MS Excel 本身使用 md5 散列作为其密码验证的一部分。对于您的 SOC2 认证,您必须通过 Microsoft 获得该认证。

    【讨论】:

    • DFriend 和 Mark Ba​​ker 感谢您澄清一切。由于此信息直接来自开发人员,因此我可以将其作为误报提交,并附上详细原因。
    【解决方案2】:

    我不是 phpspreadsheet 的开发人员之一,但我对它如何使用 md5 函数有一些观察。

    IMO,报告的漏洞是误报。确实,使用md5() 保护数据(尤其是密码)是不合适的。但是除了安全性之外,哈希值还有其他用途。似乎代码扫描假定 md5 用于加密目的。它不是。

    只要看一下源代码就知道md5() 的使用位置。首先,它用于创建具有多个属性值的对象的散列,以便于比较对象及其所有属性值。我没有发现任何涉及密码或其他安全相关任务的使用。

    样式对象(即边框、颜色、对齐方式等)是 md5 散列的常见目标。考虑一个“边界”对象。比较组合的顶部、右侧、底部、左侧和对角线值的哈希值比一次遍历一个属性以比较另一个对象中相同属性的值要容易得多。

    话虽如此,我并没有声称 phpspreadsheet 是加密安全的,或者每次使用 md5 都是合适的。我没有检查 md5 的每一次使用。但我认为有理由认为该报告并不完全准确。

    【讨论】:

      猜你喜欢
      • 2012-06-17
      • 2016-09-19
      • 1970-01-01
      • 2014-11-18
      • 2012-04-19
      • 2013-08-29
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      相关资源
      最近更新 更多