phpspreadsheet使用MD5哈希

时间:2018-12-06 14:28:45

标签: php phpexcel phpspreadsheet phpoffice

此问题适用于phpexcel / phpspreadsheet的开发人员。

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

扫描程序返回36个漏洞,所有漏洞均为“使用损坏的或有风险的密码算法”;只需使用MD5函数调用即可。

所以我的问题是为什么要使用MD5进行哈希处理,为什么还要对其进行哈希处理呢?如果我能更好地了解发生了什么,我可以尝试更改哈希机制,或者至少解释一下为什么它确实不是安全隐患。

2 个答案:

答案 0 :(得分:2)

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

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

只需看一下源代码即可了解在何处使用md5()。首先,它用于创建具有多个属性值的对象的哈希,以便轻松比较对象及其所有属性值。我没有发现它涉及密码或其他与安全相关的任务。

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

所有这些,我并不是说phpspreadsheet是加密安全的,也不是每次使用md5都是合适的。我没有检查md5的每种用法。但是我认为有理由认为报告并不完全准确。

答案 1 :(得分:1)

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

一个例外是验证任何Xls密码,因为MS Excel本身使用md5哈希作为其密码验证的一部分。对于SOC2认证,您必须与Microsoft一起进行。