博客

如何避免用户名枚举 | Secure Code Warrior

October 9, 2017
Pieter De Cremer
带有用户名和密码输入框的登录界面,密码以星号掩码显示。

侧信道攻击是指黑客从软件系统的物理实现中收集信息,而不是利用算法的理论缺陷或软件代码中的漏洞。

为了更清楚地说明这一点,我喜欢用用户名枚举作为例子。如果您想了解什么是用户名枚举或它为何有害,请访问我们的网站观看视频讲解或参与挑战,看看您能否在代码中识别出它。

要理解如何通过侧信道攻击进行用户名枚举,您需要了解现代 Web 应用程序是如何(或者至少应该如何)处理密码的。优秀的 Web 应用程序不会知道您的密码,也不会在任何地方保存或存储您的密码。那么它如何知道您输入的内容是正确的且确实是您的密码呢?答案是,您的密码经过了哈希处理。

哈希函数是一种数学运算,它易于单向执行(尽管计算成本较高),但极难逆向。对于优秀的哈希算法,输出结果取决于输入,且具有唯一性。当您在网站上注册时,存储的是哈希值,而不是您的密码本身。这意味着每次您登录时,Web 应用程序都会对您的输入进行哈希处理,并将哈希结果与存储的哈希值进行比较。如果您想了解更多关于安全密码存储的信息,可以在我们的平台上进行学习。

Hacker in hooded sweatshirt accessing a screen showing user data with passwords and credit card numbers.

在计算机上进行哈希输入需要一定时间,开发人员总是试图优化他们编写的所有内容,以确保用户获得流畅的体验。加快程序运行速度的一种方法是在不需要时跳过哈希处理。例如,当用户名不存在时(因此无需检查密码),他们可以立即响应用户。这样他们就可以跳过缓慢的密码哈希计算。如果用户名正确,他们才会对密码输入进行哈希处理,并将其与存储的哈希值进行比较。

此时,您可能已经猜到问题出在哪里了。尽管实际上哈希处理只需几毫秒,但黑客可以利用这种额外的延迟来判断他输入的用户名是否正确,因为错误的用户名响应速度会稍快一些,因为没有进行哈希处理。这种侧信道攻击被称为计时攻击,它是非功能性需求如何相互抵消的一个很好的例子。有时代码无法同时兼顾速度和安全性。

因此,即使密码处理得非常完美,且显示的提示信息是通用的,没有指出是密码还是用户名错误,系统仍然存在漏洞。解决方案很简单:始终对密码进行哈希处理,或者延迟发送回复,延迟时间应等于哈希处理所需的时间。

攻击者可以利用获取的信息来获取系统用户列表。这些信息可用于攻击 Web 应用程序,例如通过暴力破解或默认用户名/密码攻击。

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。