繁体   English   中英

网址中的哈希值及其字符串比较会受到php中的定时攻击吗?

[英]Hash in url and string comparison thereof subject to timing attack in php?

我正在审核密码重置电子邮件系统的安全性。 这是标准的,使用如下所示的电子邮件链接:

example.com/password-reset?code=Ik5S7eubvs79nxFCNx04Vdn5RNfb%2BUJRhC0khoHtuHU%3D

该代码urldecode到一个bcrypt哈希,该哈希与请求密码重置时(以及24小时的超时时间)数据库中生成的哈希匹配。

我认为这种方法非常标准,不过,请阅读以下主题的文章: https : //blog.jcoglan.com/2012/06/09/why-you-should-never-use-hash-functions-for-message -authentication / ,作者提到在两个字符串上进行常规==比较时,存在隐式的定时攻击,在理论上,任何此类比较都会被优化以逐个字符地检查并基于第一个不匹配的字符而拒绝。 这样一来,攻击者就可以通过字符串“蛮横”地蛮行最终建立比赛。 实际上是php中的安全问题吗?

我猜想由于网络延迟和php中==操作的快速速度,对于短字符串来说,这样的定时攻击实际上是不可能的,因为在东西接管网络时,它总是被随机噪声掩盖。 显然,就我的情况而言,解决方法很短(比较哈希值的哈希值或类似的恐怖值),但是我很想知道这是否是我需要关注的务实问题。

我认为定时种子是一个糟糕的选择,即使您的哈希值是短命的并且与特定用户相关联。 您需要假设您的源代码已被盗用(即使不是这样)。 我会改用openssl_random_pseudo_bytes()。 您还应该限制用户要求重设密码的能力(例如,每天/每周/等次数不得超过次数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM