0

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

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

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

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

4

2 回答 2

2

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

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

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

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

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

于 2018-12-08T16:28:43.193 回答
1

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

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

于 2018-12-08T23:27:34.393 回答