扫码阅读
手机扫码阅读

什么是计时攻击?Spring Security 中该如何防御?送书啦!

81 2024-11-05

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:什么是计时攻击?Spring Security 中该如何防御?送书啦!
文章来源:
江南一点雨
扫码关注公众号

松哥在研究Spring Security源码时发现了一段防护计时攻击的代码,决定与读者分享。此代码源自DaoAuthenticationProvider类,负责根据用户名从数据库查询用户信息,并处理用户认证。关于用户数据存储和密码加密,松哥建议参考他先前的文章。

具体分析这段代码,首先调用prepareTimingAttackProtection方法以准备防御计时攻击,该方法通过对常量USER_NOT_FOUND_PASSWORD进行编码,并将结果赋值给变量userNotFoundEncodedPassword。接着,loadUserByUsername方法根据用户名查询数据库返回用户对象。若抛出UsernameNotFoundException异常,会在抛出前调用mitigateAgainstTimingAttack方法以缓解计时攻击,该方法使用passwordEncoder.matches进行冗余的密码比对。

松哥接着解释了计时攻击,一种旁路攻击手段,通过分析密码系统的物理实现(如时间信息)而非算法弱点来破解系统。他列举了多种旁路攻击类型,如缓存攻击、功耗监控攻击、电磁攻击等。Spring Security通过在查询不到用户时执行额外的密码比对,确保无论用户存在与否,登录校验时间均保持一致,从而防止时间分析和推断用户存在性。

松哥提及,passwordEncoder中的自适应单向函数特意执行缓慢以增加系统的安全性,因此进行计时攻击的防御是重要的。最后,他宣布了一次送书活动,将他的书《深入浅出 Spring Security》赠送给五位幸运的读者,本书深入探讨了Spring Security的使用和原理。

想要了解更多内容?

查看原文:什么是计时攻击?Spring Security 中该如何防御?送书啦!
文章来源:
江南一点雨
扫码关注公众号