HTTP 通信中有什么方式防止重要信息被监听窃取

2018-07-12 18:52:32 +08:00
 cc959798

比如浏览器的 seesion_id,如果对方得到了 session_id 理论上是有了免登陆的能力,还比如 app 中授权用的 token,如果被拿到就也就不用通过授权验证。 有什么好的方式解决这个问题呢? https 是一个,除了这个方式呢?

13188 次点击
所在节点    Android
52 条回复
honeycomb
2018-07-12 19:06:07 +08:00
那个好办法就是上 TLS ( HTTPS ),或者外部套一个成本更高的套子(虚拟专用网之类的),其它 HTTP 协议范畴内的方法可以作辅助。

在 HTTP 之内再实现一个 TLS 肯定不太像是好主意
cc959798
2018-07-12 20:16:35 +08:00
@honeycomb 那终极解决方案是 https 了吗?全程 https 会不会影响效率?
f2f2f
2018-07-12 20:17:20 +08:00
如果能实现的话 https 存在的意义又是什么
Servo
2018-07-12 20:18:09 +08:00
shttp
Oceanhime
2018-07-12 20:34:48 +08:00
按照 LZ 举的例子, 实际上可以通过服务端验证更多信息 /算法的方式解决, 比如说可以在这些 session 值中添加更多验证(比如 IP)。
回到主题, HTTPS 一定是最简单且最靠谱的方法, 如 @honeycomb 所说, 如果在 HTTP 内实现一套 TLS 不光费脑子, 性能方面的开销我相信不会比上 HTTPS 要少。当然, 如果真想实现肯定有其他五花八门的方法。比如说加公私钥什么的。
(半吊子写程序的, 回答肯定非常不专业, 见谅)
isCyan
2018-07-12 20:34:58 +08:00
panpanpan
2018-07-12 20:41:55 +08:00
Session 绑定 ip 不过太容易误伤了
listnodeptr
2018-07-12 20:47:20 +08:00
HTTPS 是唯一正解,还有一堆简单、迅速、优雅的错误解法,比如只有登陆时 HTTPS 交换密钥,之后每个 HTTP 请求都在加了抗 CSRF 的时间 token 前提下(不然可重放)再用密钥签名请求,你觉得这样实现一套简单么
qinxi
2018-07-12 20:49:33 +08:00
等你做到了,
那么恭喜你,
你重新发明了 https
shiny
2018-07-12 20:54:28 +08:00
h2 了解下
xiangyuecn
2018-07-12 20:56:56 +08:00
上了 https 也不敢说信息不被监听窃取
dawniii
2018-07-12 20:58:31 +08:00
@xiangyuecn 是指不校验证书的情况吗?不校验证书为什么用 tls 呢。。。
janssenkm
2018-07-12 21:23:58 +08:00
唯一正解:HTTPS
xiangyuecn
2018-07-12 21:27:07 +08:00
@dawniii 你说的我不懂啊,也许数据在发送之前、到达服务器之前可能就被窃取了。就算校验证书也会存在问题:
1、客户端存在被信任的恶意根证书
2、客户端直接接受伪造的证书(中间人)不给任何提示(程序员实偷懒,现代码简单,校验证书实现代码就一句 return true 呵呵)。除非果程序断拒绝错误证书,否则给用户提示选择的话,点接受(忽略)错误证书也是会有的( doge

https 并不能直接解决常见的 xss、csrf:
A、前后端各种漏洞
B、服务器被黑
C、客户端数据泄露(恶意访问敏感数据,包括不限于病毒木马、流氓浏览器、插件、代理、用户人为因素)
Oceanhime
2018-07-12 21:36:21 +08:00
@xiangyuecn 2 这可能太极端了, 除非客户端用的是自己写的浏览器, 否则主流浏览器不可能出现 return true 或者程序员偷懒不验证的问题。LZ 说的是 [ HTTP 通信 ] , XSS 之类的好像不属于这个范围了。
dawniii
2018-07-12 21:38:13 +08:00
@xiangyuecn 您前面说的客户端被种恶意根证书,黑客有这个权限的话,在客户端那边黑客该有的不该有的权限基本也都有了。。。

后面说的 xss 和 csrf 本来就不是 tls 负责的,这算是业务上面的漏洞。tls 只是保证数据在传输过程中的安全,应该是满足 up 的需求。
bumz
2018-07-12 21:40:03 +08:00
https + HPKP
des
2018-07-12 21:43:59 +08:00
@xiangyuecn
第一恶意根证书,就好比你家进了小偷(小偷在你家装了摄像头),你没办法避免的,你说是浏览器环境。

第二,根本没有一劳永逸的安全解决方案
xiangyuecn
2018-07-12 21:53:28 +08:00
@Oceanhime 没写过浏览器(关键是不会写,哈哈),app 套一个 webview 还是会的,不光是 Android,ios 估计也有这种问题。


@dawniii 单纯的数据传输我能想到的也就是证书的问题了,不极端点目测大部分情况下其实算是安全的。其实我想的通信过程不仅仅是数据传输,这之前还要有规范的数据格式,之前的之前还要有数据的生成,之后的数据接收解码,数据的使用。哈哈,写的啰嗦了,不管是哪个地方有问题,都会导致整个系统有问题,问题出的多的往往是开头和结尾处
xiangyuecn
2018-07-12 21:54:26 +08:00
@des 精辟

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

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

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

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

© 2021 V2EX