要求在不安装额外的客户端的情况下浏览器正常访问
1
greatdancing 2019-10-17 22:05:05 +08:00 via Android 3
上一次有人问
V 友给的答案是难道你要重新发明 HTTPS? |
2
zhangchaoquan OP @greatdancing 😳
|
3
neteroster 2019-10-17 22:59:53 +08:00 via Android 1
这不就是重新发明 HTTPS :(
|
4
whileFalse 2019-10-17 23:11:47 +08:00 via iPhone
上次有人问过。答案是不可能。
因为不管做什么你都要用 js 去解密。 然而第一个 js 通过 http 传输,会被中间人替换。 除非能保证第一个 js 的真实性。 https 的本质也只是在操作系统预置了保证真实的证书而已。 |
5
yyfearth 2019-10-18 05:49:54 +08:00 1
能不能要看你的目的是什么 HTTPS 主要有两个功能 一个是加密流量 一个是证书校验
如果你的目的仅仅是像 HTTPS 一样加密流量 让中间的网络设备没办法“直接没有针对性”的读取和识别 (目的你懂的) 这样你可以加密 Ajax API Call 的内容 然后用 JS 解密后在使用 但是如果你的目的是防止篡改(就是 HTTPS 的证书) 那就没办法 除非你现在客户端上干点什么 比如安装一个浏览器插件 或者在本地开个服务器什么的 做校验(相当于 HTTPS 本地的首信 CA ) 否则就像楼上说的一样 中间人可以“有针对性的修改”你的 JS 读取以及替换你解码用的部分 那么所有加密流量就可以被读取识别和替换了 总结一下 关键就是看你的需求 要不要防止有针对性的攻击 在此基础上要不要防止篡改 |
6
yyfearth 2019-10-18 05:55:35 +08:00
|
7
whileFalse 2019-10-18 08:38:35 +08:00
@yyfearth #6 对。核心就是有个初始可信组件。
|
8
zhangchaoquan OP @yyfearth 不是防篡改,就是让中间件无法识别。
|
9
yyfearth 2019-10-18 11:41:02 +08:00
@zhangchaoquan 那就很简单了 这就和 HTTPS 没啥关系了
你只要把所有 API 的数据加密 然后浏览器里面解密再用就是 如果是多页 app HTML 本身也要加密 就直接输出一段加密后的 JS 然后解密 HTML 然后 body 上面 append 就可以了 反正你也不考虑 JS 被篡改的情况 |
10
Unknowncheats 2019-10-18 13:02:32 +08:00 via Android
又看見你的帖子。給你個方法:你穿越回去把發明 https 的人殺了
|
11
zhangchaoquan OP @Unknowncheats 感谢,这就去
|