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