2016-04-20 34 views
2

是有使用睡眠()停止暴力攻击的任何一点,如果密码被bcrypt与password_hash($password, PASSWORD_DEFAULT)['cost' => 12]登录形式睡眠()与bcrypt

登录形式存储使用标准password_verify

if (!password_verify($password, $check_password)) { 

我已经注意到将成本增加到16将大大增加提交后的登录时间。它的工作方式与sleep()相同吗?如果是这样,是否可以利用它来DOS服务器?

回答

7

成本因素旨在阻止离线强力攻击(即在某人从数据库中抓取哈希值后)。 Bcrypt已经太慢了,不适用于实际的蛮力攻击。例外:如果您的密码是10,000 most common之一,那么猜测是微不足道的。你想要的是,而不是增加成本因素​​,重点是rate limiting your login attempts

+0

谢谢。 DOS攻击怎么样?他们是否可以利用与睡眠相同的方式进行加密? –

+1

'sleep()'不是一个DoS向量; bcrypt可以。选择一个可接受的成本参数(即125毫秒 - >每秒每个核心8次登录是您的身份验证瓶颈)。 –

+0

最好通过要求工作证明对客户进行评级限制。使用户代理计算大量的主要因素。在服务器上验证的速度非常快,但在客户端计算起来很慢 –