SCW图标
英雄背景无分隔线
博客

Comment éviter l'énumération des noms d'utilisateur | Secure Code Warrior

皮特-德-克雷默
发表于 2017 年 10 月 09 日
最后更新于 2026年3月8日

侧信道攻击是指黑客可以从软件系统的物理实现中收集信息,而不是从算法的理论弱点或软件代码的错误中收集信息。

我喜欢用一个例子来更清楚地说明这一点,就是一个做用户名枚举的方法。如果你想知道什么是用户名枚举,或者为什么它是坏的,请访问我们的网站获取视频解释,或者玩一个挑战,看看你是否能在代码中识别它。

现在,为了理解如何通过侧面渠道攻击进行用户名枚举,你需要对现代网络应用中如何处理密码(或至少应该如此)有一些了解。一个好的网络应用程序不知道你的密码,它不会把你的密码保存或储存在任何地方。那么,它怎么知道你输入的是正确的,而且是你的密码呢?嗯,你的密码是散列的。

散列函数是一种数学运算,它很容易以一种方式进行(尽管计算上有些昂贵),但很难逆转,对于好的散列算法,输出是唯一的,取决于输入。当你在一个网站上注册时,该散列值被安全地存储,而不是你的密码本身。这意味着,每次你登录时,网络应用都会对你的输入进行散列,并将散列结果与存储的散列进行比较。如果你想了解更多关于安全的密码存储,你可以在我们的平台上进行。

哈希输入需要在计算机上花费一些时间,开发人员总是试图优化他们编写的一切,以使用户有一个流畅的体验。有一件事可以加快程序的速度,那就是在不需要的时候跳过散列。例如,当用户名不存在时(因此不需要检查密码),他们可以立即响应用户。这样他们就可以跳过对密码进行哈希运算的缓慢计算。如果用户名是正确的,他们将对输入的密码进行散列,并将其与存储的散列进行比较。

在这一点上,你可能已经猜到了事情可能出错的地方。尽管在现实中哈希运算只需要几毫秒,但黑客可以利用这个额外的延迟来找出他输入的用户名是否正确,因为一个错误的用户名会有一个稍快的反应,因为没有进行哈希运算。这种类型的旁门左道攻击被称为定时攻击,它是一个很好的例子,说明不同的非功能需求是如何相互抵消的。有时代码不能同时做到快速和安全。

因此,尽管密码处理得很完美,而且显示的信息是通用的,没有提示密码或用户名是否错误,但系统仍有漏洞。解决方法很简单,总是对密码进行哈希处理,或者将发送回复的时间推迟到哈希处理所需的时间。

获得的信息可以被攻击者用来获得系统中的用户列表。这些信息可以用来攻击网络应用程序,例如,通过暴力或默认用户名/密码攻击。

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

显示资源
显示资源

L'énumération des noms d'utilisateur se produit lorsque les pirates informatiques utilisent des attaques par force brute pour obtenir des informations sur le nom d'utilisateur et le mot de passe. Découvrez comment éviter l'énumération des noms d'utilisateur avec Secure Code Warrior.

您想了解更多吗?

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

了解更多

Secure Code Warrior 在整个软件开发周期中保障代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全负责人、开发人员、信息安全主管,还是其他任何参与安全工作的人员,我们都能协助您的组织降低不安全代码带来的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
皮特-德-克雷默
发表于 2017年10月09日

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

分享到:
领英品牌社交x 标志

侧信道攻击是指黑客可以从软件系统的物理实现中收集信息,而不是从算法的理论弱点或软件代码的错误中收集信息。

我喜欢用一个例子来更清楚地说明这一点,就是一个做用户名枚举的方法。如果你想知道什么是用户名枚举,或者为什么它是坏的,请访问我们的网站获取视频解释,或者玩一个挑战,看看你是否能在代码中识别它。

现在,为了理解如何通过侧面渠道攻击进行用户名枚举,你需要对现代网络应用中如何处理密码(或至少应该如此)有一些了解。一个好的网络应用程序不知道你的密码,它不会把你的密码保存或储存在任何地方。那么,它怎么知道你输入的是正确的,而且是你的密码呢?嗯,你的密码是散列的。

散列函数是一种数学运算,它很容易以一种方式进行(尽管计算上有些昂贵),但很难逆转,对于好的散列算法,输出是唯一的,取决于输入。当你在一个网站上注册时,该散列值被安全地存储,而不是你的密码本身。这意味着,每次你登录时,网络应用都会对你的输入进行散列,并将散列结果与存储的散列进行比较。如果你想了解更多关于安全的密码存储,你可以在我们的平台上进行。

哈希输入需要在计算机上花费一些时间,开发人员总是试图优化他们编写的一切,以使用户有一个流畅的体验。有一件事可以加快程序的速度,那就是在不需要的时候跳过散列。例如,当用户名不存在时(因此不需要检查密码),他们可以立即响应用户。这样他们就可以跳过对密码进行哈希运算的缓慢计算。如果用户名是正确的,他们将对输入的密码进行散列,并将其与存储的散列进行比较。

在这一点上,你可能已经猜到了事情可能出错的地方。尽管在现实中哈希运算只需要几毫秒,但黑客可以利用这个额外的延迟来找出他输入的用户名是否正确,因为一个错误的用户名会有一个稍快的反应,因为没有进行哈希运算。这种类型的旁门左道攻击被称为定时攻击,它是一个很好的例子,说明不同的非功能需求是如何相互抵消的。有时代码不能同时做到快速和安全。

因此,尽管密码处理得很完美,而且显示的信息是通用的,没有提示密码或用户名是否错误,但系统仍有漏洞。解决方法很简单,总是对密码进行哈希处理,或者将发送回复的时间推迟到哈希处理所需的时间。

获得的信息可以被攻击者用来获得系统中的用户列表。这些信息可以用来攻击网络应用程序,例如,通过暴力或默认用户名/密码攻击。

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

显示资源
显示资源

请填写以下表格以下载报告

我们希望获得您的授权,以便向您发送有关我们产品和/或安全编码相关主题的信息。我们将始终以最高标准谨慎处理您的个人数据,绝不会将其出售给其他企业用于营销目的。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用「Analytics」Cookie。完成操作后,请随时将其重新禁用。

侧信道攻击是指黑客可以从软件系统的物理实现中收集信息,而不是从算法的理论弱点或软件代码的错误中收集信息。

我喜欢用一个例子来更清楚地说明这一点,就是一个做用户名枚举的方法。如果你想知道什么是用户名枚举,或者为什么它是坏的,请访问我们的网站获取视频解释,或者玩一个挑战,看看你是否能在代码中识别它。

现在,为了理解如何通过侧面渠道攻击进行用户名枚举,你需要对现代网络应用中如何处理密码(或至少应该如此)有一些了解。一个好的网络应用程序不知道你的密码,它不会把你的密码保存或储存在任何地方。那么,它怎么知道你输入的是正确的,而且是你的密码呢?嗯,你的密码是散列的。

散列函数是一种数学运算,它很容易以一种方式进行(尽管计算上有些昂贵),但很难逆转,对于好的散列算法,输出是唯一的,取决于输入。当你在一个网站上注册时,该散列值被安全地存储,而不是你的密码本身。这意味着,每次你登录时,网络应用都会对你的输入进行散列,并将散列结果与存储的散列进行比较。如果你想了解更多关于安全的密码存储,你可以在我们的平台上进行。

哈希输入需要在计算机上花费一些时间,开发人员总是试图优化他们编写的一切,以使用户有一个流畅的体验。有一件事可以加快程序的速度,那就是在不需要的时候跳过散列。例如,当用户名不存在时(因此不需要检查密码),他们可以立即响应用户。这样他们就可以跳过对密码进行哈希运算的缓慢计算。如果用户名是正确的,他们将对输入的密码进行散列,并将其与存储的散列进行比较。

在这一点上,你可能已经猜到了事情可能出错的地方。尽管在现实中哈希运算只需要几毫秒,但黑客可以利用这个额外的延迟来找出他输入的用户名是否正确,因为一个错误的用户名会有一个稍快的反应,因为没有进行哈希运算。这种类型的旁门左道攻击被称为定时攻击,它是一个很好的例子,说明不同的非功能需求是如何相互抵消的。有时代码不能同时做到快速和安全。

因此,尽管密码处理得很完美,而且显示的信息是通用的,没有提示密码或用户名是否错误,但系统仍有漏洞。解决方法很简单,总是对密码进行哈希处理,或者将发送回复的时间推迟到哈希处理所需的时间。

获得的信息可以被攻击者用来获得系统中的用户列表。这些信息可以用来攻击网络应用程序,例如,通过暴力或默认用户名/密码攻击。

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

查看网络研讨会
开始
了解更多

点击下方链接,下载此资源的PDF文件。

Secure Code Warrior 在整个软件开发周期中保障代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全负责人、开发人员、信息安全主管,还是其他任何参与安全工作的人员,我们都能协助您的组织降低不安全代码带来的风险。

显示报告预约演示
下载PDF文件
显示资源
分享到:
领英品牌社交x 标志
您想了解更多吗?

分享到:
领英品牌社交x 标志
作者
皮特-德-克雷默
发表于 2017年10月09日

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

分享到:
领英品牌社交x 标志

侧信道攻击是指黑客可以从软件系统的物理实现中收集信息,而不是从算法的理论弱点或软件代码的错误中收集信息。

我喜欢用一个例子来更清楚地说明这一点,就是一个做用户名枚举的方法。如果你想知道什么是用户名枚举,或者为什么它是坏的,请访问我们的网站获取视频解释,或者玩一个挑战,看看你是否能在代码中识别它。

现在,为了理解如何通过侧面渠道攻击进行用户名枚举,你需要对现代网络应用中如何处理密码(或至少应该如此)有一些了解。一个好的网络应用程序不知道你的密码,它不会把你的密码保存或储存在任何地方。那么,它怎么知道你输入的是正确的,而且是你的密码呢?嗯,你的密码是散列的。

散列函数是一种数学运算,它很容易以一种方式进行(尽管计算上有些昂贵),但很难逆转,对于好的散列算法,输出是唯一的,取决于输入。当你在一个网站上注册时,该散列值被安全地存储,而不是你的密码本身。这意味着,每次你登录时,网络应用都会对你的输入进行散列,并将散列结果与存储的散列进行比较。如果你想了解更多关于安全的密码存储,你可以在我们的平台上进行。

哈希输入需要在计算机上花费一些时间,开发人员总是试图优化他们编写的一切,以使用户有一个流畅的体验。有一件事可以加快程序的速度,那就是在不需要的时候跳过散列。例如,当用户名不存在时(因此不需要检查密码),他们可以立即响应用户。这样他们就可以跳过对密码进行哈希运算的缓慢计算。如果用户名是正确的,他们将对输入的密码进行散列,并将其与存储的散列进行比较。

在这一点上,你可能已经猜到了事情可能出错的地方。尽管在现实中哈希运算只需要几毫秒,但黑客可以利用这个额外的延迟来找出他输入的用户名是否正确,因为一个错误的用户名会有一个稍快的反应,因为没有进行哈希运算。这种类型的旁门左道攻击被称为定时攻击,它是一个很好的例子,说明不同的非功能需求是如何相互抵消的。有时代码不能同时做到快速和安全。

因此,尽管密码处理得很完美,而且显示的信息是通用的,没有提示密码或用户名是否错误,但系统仍有漏洞。解决方法很简单,总是对密码进行哈希处理,或者将发送回复的时间推迟到哈希处理所需的时间。

获得的信息可以被攻击者用来获得系统中的用户列表。这些信息可以用来攻击网络应用程序,例如,通过暴力或默认用户名/密码攻击。

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

目录

下载PDF文件
显示资源
您想了解更多吗?

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

了解更多

Secure Code Warrior 在整个软件开发周期中保障代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全负责人、开发人员、信息安全主管,还是其他任何参与安全工作的人员,我们都能协助您的组织降低不安全代码带来的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子