这个问题是针对phpexcel/phpspreadsheet的开发人员的。
我们目前正在使用我们网站上的库来生成excel文件(显然),并且目前正在获得SOC2认证的过程中;这要求我们将所有代码和第三方代码运行到安全扫描仪中。
扫描程序返回36个漏洞,所有这些漏洞都是“使用损坏的或有风险的加密算法”;这是简单使用MD5函数调用的结果。
所以我的问题是,为什么散列使用MD5,为什么我们要散列它?如果我能更好地理解发生了什么,我可以尝试更改散列机制,或者至少解释为什么它确实不是一个安全风险。
发布于 2018-12-09 00:28:43
我不是phpspreadsheet的开发人员之一,但我对它如何使用md5函数有一些观察。
国际海事组织,报告的漏洞是误报。确实,使用md5()来保护数据(尤其是密码)是不合适的。但是,除了安全性之外,哈希值还有其他用途,代码扫描似乎假设md5被用于加密目的。事实并非如此。
只需看一下源代码,看看在哪里使用了md5()。首先,它用于创建具有多个属性值的对象的散列,以便轻松比较对象及其所有属性值。我没有发现它有任何涉及密码或其他安全相关任务的用途。
样式对象(即边框、颜色、对齐方式等)是md5散列的常见目标。考虑一个“边框”对象。比较顶部、右侧、底部、左侧和对角线组合的散列值要比一次遍历一个属性来比较另一个对象中相同属性的值容易得多。
尽管如此,我并不是说phpspreadsheet是加密安全的,也不是说每次使用md5都是合适的。我并没有检查md5的每一个用法。但我认为有理由认为这份报告并不完全准确。
发布于 2018-12-09 07:27:34
正如DFriend已经注意到的,在PHPExcel/PHPSpreadsheet中使用md5()并没有(有一个例外)用于加密目的。用于生成准唯一哈希/校验和,用于对象值的快速比较。
唯一的例外是验证任何Xls密码,因为MS Excel本身使用md5散列作为其密码验证的一部分。对于你的SOC2认证,你必须向微软申请。
https://stackoverflow.com/questions/53653599
复制相似问题