我读过不应该使用strncmp(userSuppliedPassword,origPassword,sizeOfArray)
(或String.equals
在 Java 中),因为可以使用计时攻击来猜测密码。相反,应该使用一种安全的字符串比较函数,无论比较失败还是成功,该函数都将花费相同的时间。
但是由于userSuppliedPassword
andorigPassword
应该被散列(和加盐),除非一个人已经在做一些愚蠢的事情,否则似乎没有办法利用这种攻击。
那么这个建议什么时候是真的呢?