某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

    • 服务器端主题
    • SQL注入

    • 身份验证

      • 身份验证漏洞
      • 基于密码的漏洞
      • 多因素身份验证的漏洞
      • 其他身份验证机制的漏洞
      • 如何保护你的身份验证机制
        • 小心用户凭据
        • 不要指望用户的安全性
        • 防止用户名枚举
        • 实施强大的暴力破解保护
        • 对你的验证逻辑进行三重检查
        • 不要忘记附加功能
        • 实施正确的多因素身份验证
      • 用户名列表
      • 密码列表
      • 实验室参考答案
    • 目录遍历

    • OS命令注入

    • 业务逻辑漏洞

    • 信息泄露

    • 访问控制

    • 文件上传漏洞

    • 条件竞争

    • 服务端请求伪造(SSRF)

    • XML外部实体(XXE)注入

    • NoSQL注入

    • API测试

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 服务器端主题(翻译)
  • 身份验证
clincat
2023-05-06
目录

如何保护你的身份验证机制

翻译

原文:https://portswigger.net/web-security/authentication/securing

- name: 翻译
  desc: 原文:https://portswigger.net/web-security/authentication/securing
  bgColor: '#F0DFB1'
  textColor: 'green'
1
2
3
4

# 如何保护你的身份验证机制

在本节中,我们将讨论 如何防止身份验证机制中,出现我们讲解过的一些漏洞。

身份验证是一个复杂的主题,正如我们所展示的那样,不幸的是,弱点和缺陷很容易出现。在这里讲解所有的保护措施 显然是不现实的。但是,有几个一般原则,你应该始终遵循。

# 1.1小心用户凭据

如果你无意中 向攻击者泄露了一组有效的登录凭据,即使是最强大的身份验证机制,也是无效的。这一点不用说,你永远都不应该通过未加密的连接,来发送任何登录数据。尽管你已经为登录请求实现了 HTTPS,但请确保 将任何 HTTP 请求重定向到 HTTPS 来强制执行此操作。

您还应该审核您的网站,以确保 公开访问的配置文件 或 HTTP 响应中没有泄露 用户名或电子邮件地址。

# 1.2不要指望用户的安全性

严格的身份验证措施,通常需要用户进行一些额外的工作。人类的本性使得一些用户 会找到方法来节省自己的精力。因此,您需要尽可能 强制实施安全行为。

最明显的例子是:实施有效的密码策略。一些更传统的策略之所以失败,是因为人们将自己的可预测密码,硬是要输入到策略中。相反,实现某种简单的密码检查器可能更有效,它允许用户对密码进行试验,并实时提供有关其强度的反馈。一个流行的例子,是由 Dropbox 开发的 JavaScript 库 zxcvbn 。只允许密码检查器评级较高强度的密码,与传统策略相比,你可以更有效地 强制用户使用安全密码。

# 1.3防止用户名枚举

如果你泄露系统上存在的用户,则攻击者就更容易破坏你的身份验证机制。甚至在某些情况下,由于网站的性质,“知道某个人有特定的账户” 本身就是敏感信息。

无论尝试的用户名是否有效,都必须使用相同的通用错误消息,并确保它们确实相同。每个登录请求都应该返回相同的 HTTP 状态代码,最后,使不同情况下的响应时间尽可能难以区分。

# 1.4实施强大的暴力破解保护

考虑到构建暴力攻击是多么简单,确保你采取措施 防止或中断 任何暴力登录的尝试,是至关重要的。

这应该包括 “防止攻击者操纵其明显 IP 地址的防护措施” 。理想情况下,你应该要求用户 在每次登录尝试达到一定限制后,完成 CAPTCHA(验证码)测试。

请记住,这并不能保证完全消除暴力破解的威胁。但是,使该过程尽可能繁琐和手动,可能会使任何潜在攻击者放弃攻击,并寻找更容易的其它目标。

# 1.5对你的验证逻辑进行三重检查

正如我们在实验室 (opens new window)所展示的那样,简单的逻辑缺陷 (opens new window)很容易渗透到代码中,在身份验证的情况下,这些缺陷有可能完全危及你的网站和用户。彻底审查所有验证或确认逻辑 以消除缺陷,是可靠身份验证的关键。所以,“可以绕过的检查” 并不会比 “根本没有检查” 好到哪里去。

# 1.6不要忘记附加功能

确保不要只关注中心登录页面,而忽略与身份验证相关的其他功能。在攻击者可以自由注册自己的帐户,并探索此功能的情况下,这一点尤其重要。请记住,密码重置或更改功能,与主要登录机制一样是有效的攻击面,因此必须同样健壮。

# 1.7实施正确的多因素身份验证

虽然多因素身份验证 可能不适用于每个网站,但如果操作得当,它比单独的、基于密码的登录更安全。请注意,“验证同一因素的多个实例” 并不是真正的多因素身份验证。“通过电子邮件发送验证码” 本质上只是一种更冗长的单因素身份验证形式。

基于 SMS(短信)的 2FA 技术验证了两个因素(你知道的 和 你拥有的)。但是,如果存在 SIM 卡交换滥用的可能性,这意味着该系统可能并不可靠。

理想情况下,2FA 应该使用 “直接生成验证码的专用设备 或 应用程序” 来实现。由于它们是专门为提供安全性而构建的,因此它们通常更安全。

最后,就像主身份验证逻辑一样,请确保 2FA 检查中的逻辑是合理的,以便无法被轻易绕过。

编辑 (opens new window)
其他身份验证机制的漏洞
用户名列表

← 其他身份验证机制的漏洞 用户名列表→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式