在没有 https 的情况下,如何确保用户登录安全

2019-08-27 11:16:42 +08:00
 NoKey
考虑了一下这个问题
目前把这个问题分成两步
第一,注册
第二,登陆

注册这部分,我这里无解,我想不到有效的办法。。。

登陆这个,有一个办法
将用户的密码做 md5,然后加上当前的时间戳,再做一次 md5
伪代码表达:
md5(md5(passwd)+timestamp)
返回给服务器的时候,将这个结果和 timestamp 一起返回

服务器除了常规的字段验证之外,需要验证时间戳,每个时间戳,只能使用一次
这样应该可以避免使用抓包数据登陆

各位大佬,有没有更好的办法呢?一起讨论一下吧~~~
14820 次点击
所在节点    程序员
148 条回复
falcon05
2019-08-27 14:12:30 +08:00
@Hanada 是,你说得对
ihciah
2019-08-27 14:16:54 +08:00
@xuanbg 有点厉害,详细说说?
tankren
2019-08-27 14:17:07 +08:00
没有 https 我肯定不会成为用户
ImJoeHs
2019-08-27 14:17:59 +08:00
@xuanbg #37 你这回复给我看乐了...
先搞清楚中间人都能干什么吧,不上 https,不保障信道安全,你玩出花来都没用
简而言之,事关安全,千万别想着自己造轮子,老老实实站在前人的肩膀上
npe
2019-08-27 14:19:38 +08:00
没用
icedir
2019-08-27 14:23:47 +08:00
@xuanbg 这样不行,这个 CODE 接口,中间人也一样可以调用
arrow8899
2019-08-27 14:24:50 +08:00
@xuanbg 我没研究过网络安全啊,那你能给我讲讲怎么抓取并重放 https 的数据包吗???
xuanbg
2019-08-27 14:26:43 +08:00
@icedir 中间人拿到 code 没用啊,他缺密码
lygmqkl
2019-08-27 14:56:11 +08:00
非 https,想要做到 中间不被监听等于造一套 https,所以这个问题真没啥意义。。。 而且即使 https 也不是 100%安全,何况非 https
lshero
2019-08-27 15:04:50 +08:00
@lsylsy2 你说的对,在中间人面前所有的造轮子小技巧都是徒劳的,这个问题没有意义。
楼主的问题就和面试中遇到的那些奇葩的面试题题一样,所以只能从个人的理解去回答。
其实即使保证了传输安全,但是如何确保浏览器等客户端环境的安全?
否则厂商也没有必要给 U 盾加装一块屏幕显示交易信息了。
最后能保障安全的只能是 CA 买的保险以及 webtrust 对 CA 的审计还有法律对电子签名的认可
no1xsyzy
2019-08-27 15:50:00 +08:00
@xuanbg 无非是重放攻击?
那为什么还要中间人?旁听人不就行了?
no1xsyzy
2019-08-27 15:57:58 +08:00
中间人面前都是徒劳
对付所有办法,直接插个前端录屏的审计工具(这个我记得有人发过分享创造)
有中间人,只要你访问一个没 HTTPS 的网页并且点击页面内任何位置,连剪贴板都给你挖出来
(所以其实我第一次知道剪贴板竟然是应用程序自己任意决定何时读取何时写入的时候是震惊的)
luozic
2019-08-27 16:03:09 +08:00
模拟 https 再搞一套?
janus77
2019-08-27 16:03:39 +08:00
你这问题就相当于 没有车怎么能跟坐车的人一样准时到目的地
ipwx
2019-08-27 16:07:52 +08:00
@xuanbg 神他么中间人只能重放攻击。

@NoKey 我把服务器发过来的网页替换成我的 JS,让浏览器直接发明文到你中间人的服务器上,然后中间人服务器再按正常流程 MD5 一遍密码发给上游,这才叫中间人。
polymerdg
2019-08-27 16:08:32 +08:00
中間都是明文 抓包 原形畢露
gamexg
2019-08-27 16:17:39 +08:00
@xuanbg 重放攻击?
我记得 ssl 握手时要求双端生成随机数,重放攻击会使得服务端随机数对不上,重放攻击失败。
gamexg
2019-08-27 16:22:38 +08:00
你需要考虑中间人是只能监听流量还是能够修改流量。
如果只能监听,那么好解决,我记得 dh 密钥交换就可以做到中间人无法获得加密密钥。
如果可以修改,那么没有除非是 https,不然不可能做到安全。
nnnToTnnn
2019-08-27 16:30:10 +08:00
保证不了谢谢,就算采用 rsa 也没办法防止中间人,除非你能解决以下问题

+ HTTP Strict Transport Security, a.k.a. HSTS (defined in RFC6797)
+ HTTP Public Key Pinning a.k.a. HPKP (defined in RFC7469)
+ DNS-based Authentication of Name Entities a.k.a. DANE (RFC6698 and RFC7671)
nnnToTnnn
2019-08-27 16:32:25 +08:00
@nnnToTnnn 无法防止中间人,意味着上层路由可以盗取用户帐号密码,篡改订单数量,等等各种操作,用户对于黑客而言,没有任何隐私

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/595470

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX