AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1623881
Accepted
Alex
Alex
Asked: 2021-02-06 22:32:56 +0800 CST2021-02-06 22:32:56 +0800 CST 2021-02-06 22:32:56 +0800 CST

使用哈希而不是登录密码进行身份验证?

  • 772

我看一下网站\网络服务器的简单身份验证的想法。

用户单击Create profile。

网站引擎从一组随机的 20 个单词中生成哈希,例如

7a639b05f08394030e8bd81f411eb44025b0df1d1809d618993f10624a020ace

用户在登录字段中输入哈希或使用链接登录

site.com/login/7a639b05f08394030e8bd81f411eb44025b0df1d1809d618993f10624a020ace

使用哈希而不是登录密码对是否安全?

passwords webserver
  • 1 1 个回答
  • 468 Views

1 个回答

  • Voted
  1. Best Answer
    Frank Thomas
    2021-02-06T23:21:20+08:002021-02-06T23:21:20+08:00

    如果字符串足够长,这可能会实现您想要的,但是您将有效地创建一个人类无法可靠登录的站点。您正在使用散列而不是某种提供 x 长度字符串的唯一值生成器对这种情况没有影响。哈希值中包含的短语数量也没有。

    哈希的重点是验证用户输入,而不是输入本身。您的建议很容易受到蛮力攻击,除了结合用户名和密码外,什么也做不了。您还不如只拥有一个密码数据库,并根据输入的密码匹配人员,这永远不会匹配其他用户的密码,因为它现在是您帐户数据库中的用户主要标识。

    所以想象一下我在普通网站上注册了一个用户帐户,并输入了用户名和密码。该站点从不存储我的密码,但会在其上计算哈希值并存储该哈希值。当我尝试登录时,我会发送我的用户名和密码。远程服务器对我提交的密码进行哈希处理,查找我的用户名并从帐户数据库中检索现有哈希,然后进行比较。如果它们匹配,我就通过了身份验证。请注意,重要的是我提供了密码,并且它计算到相同的哈希值。这就是服务器知道我知道密码的方式。另请注意,服务器没有我的密码。有权访问其数据库的人无法以我的身份登录,因为拟合哈希算法是不可逆的。

    有些系统接受长字符串作为身份验证(非常大的密钥空间会使暴力破解成为问题),因此如果您的用户数量很少,复杂的序列就足够了。这个概念经常用在用于对 Web 资源进行身份验证的“API 密钥”中,但这些密钥只是一个字面值。它们就是密码本身。只要对手无法预测它们,您获得它们的方法并不重要。

    所以散列实际上与这里的问题或解决方案无关。如果您想为用户识别和身份验证使用相同的长值,这取决于您,但请记住,在您的方案下,不允许两个用户拥有相同的值......好吧,我们称之为“身份字符串“因为这基本上就是您现在使用它的目的。您可能只需要长的用户名,并且任何知道(或猜测)现有用户名的人都会被自动允许进入。

    请记住,密码只有character-set^length. 但是用户名和密码具有username's character-ser^length * the passwords character-Set^length. 通过要求攻击者正确猜测两者,您将难度乘以巨大的价值。

    • 1

相关问题

  • 我网站上的黑客 php 文件?[关闭]

  • 如何从 WinSCP 导出文件中获取未加密的 FTP 登录密码?

  • 如何编写远程监控和管理脚本

  • 续订 letsencrypt SSL 证书后,服务器仅返回响应代码 400

  • Chrome 密码和子目录

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve