为了账号安全,请及时绑定邮箱和手机立即绑定

客户端密码加密

客户端密码加密

大话西游666 2019-08-30 17:31:57
我必须保护我的网站用户的密码。我所做的是在服务器端使用MD5 加密哈希。但问题是密码保留为纯文本,直到它到达服务器,这意味着可以使用流量监控捕获密码。所以我想要的是使用客户端密码加密/散列机制并发送加密/散列密码。任何人都可以告诉你这样做的方法是什么?
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

这不安全,解释原因很简单:

如果您在客户端散列密码并使用该令牌而不是密码,则攻击者将不太可能找到密码。

但是,攻击者并不需要找出密码是什么,因为您的服务器不期待任何密码更多-这是预期的令牌。并且攻击者确实知道令牌,因为它是通过未加密的HTTP发送的!

现在,有可能将某种挑战/响应形式的加密混合在一起,这意味着相同的密码将在每个请求中产生不同的令牌。但是,这将要求密码以可解密的格式存储在服务器上,这是不理想的,但可能是一个合适的折衷方案。

最后,你真的想要用户在登录你的网站之前打开javascript吗?

在任何情况下,SSL都不再昂贵或者特别难以设置解决方案


查看完整回答
反对 回复 2019-08-30
?
九州编程

TA贡献1785条经验 获得超4个赞

我会选择这个简单的解决方案。

总结一下:

  • 客户“我要登录”

  • 服务器生成随机数#S并将其发送到客户端

  • 客户

    • 读取用户键入的用户名和密码

    • 计算密码的哈希值,获取h(pw)(这是存储在数据库中的内容)

    • 生成另一个随机数 #C

    • 连接h(pw) + #S + #C并计算其哈希值,调用它h(all)

    • 发送到服务器username#Ch(all)

  • 服务器

    • 从DB 检索h(pw)'指定username

    • 现在它有所有要计算的元素h(all'),就像客户那样

    • if h(all)h(all')then h(pw)h(pw)',几乎可以肯定

没有人可以重复以指定用户身份登录的请求。#S每次都向哈希添加一个变量组件(它是基础)。#C增加额外的噪音。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 645 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号