为啥用 F12 看不到很多公司的接口请求和响应的?请问下大家这种具体是怎么做到的?

302 天前
 shadow1949

对网络传输和安全这一块不太了解,最近公司让我们对接口出入参做个加解密,我便想去其他平台看看他们怎么做的,发现很多页面实际上都无法抓到实际的 XHR 接口,要么返回的是整个页面,要么直接在网络里面啥都找不到……

请问下大家这种具体是怎么做到的?是直接存在 CDN 之类的里面吗(可应该不会所有页面都在 CDN 吧)?

另外有必要对接口出入参做加解密吗?搜了一些文章,有些人说可以用 RSA 和 ASE 做加密,有些人又说出入参加解密根本没必要,因为 HTTPS 本身够安全,即使加密,前端代码也是公开的,能够直接破解。

4994 次点击
所在节点    程序员
33 条回复
lm930129
302 天前
参数加密确实没啥用,因为你肯定有个前端解密的过程,你前端代码是没法加密的。比如,某政府网站,接口通过物理 key 进行加解密,传出和传入参数都是密文,但是意义不大的,你在控制台,直接调用前端加密和解密函数,就可以得到明文的。
datoujiejie221
302 天前
现在单一的加解密已经很难防止破解了,看了 https 协议,你会发现最复杂的不是加解密,而是双方随机数的生成,就像 gpt 和文心一言网页版,虽然请求可以抓到明文,但是随机 token 的生成几乎不能破解。
F7TsdQL45E0jmoiG
302 天前
前后端分离天生就不安全
ljsh093
302 天前
ws 传输的吧
Light3
302 天前
十年前的模版渲染?
lyc8503
302 天前
可能性:
1. 使用了模板渲染
2. Websocket
3. Server-side rendering

解决方法:
1 直接用 bs4 解析 html 拿数据
2 直接看 Websocket
3 可以直接读取 __NEXT_DATA__

如果要接口加密,自己 JS 写个签名算法,混淆 JS 能提升逆向难度,但也是治标不治本,有经验的人来很快就能分析出来

正确方法是后端进行风控,比如限制手机号登录,限制 IP 等
sampeng
302 天前
https 没必要把接口做加密。直接做签名就好了。签名包含时间。后端就能做风控了
xiangyuecn
302 天前
万物皆可破解,就看值不值
Nosub
302 天前
首先要说的是安全只是相对的,后端渲染和 socket 本身也有自己的局限性,数据全部加密不是不行,成本太高,前后端都要加解密,@sampeng 这个哥们说的基本是对的,如果网站本身已经是 https 了,做 api 的接口签名校验就可以了,敏感的数据还是要加密的,比如注册,登陆时候的账号密码,刚好我最近写了一篇文章,感兴趣的可以看看,https://nosub.net/posts/p/72
kahlkn
302 天前
前端加密只能防止一些门外汉(不过像登录账号密码等,可以考虑加个密)。 专心搞破解的,前端加密没啥用。

你说的那种抓不到 xhr ,大概率两种,一种就是服务端 渲染成 Html 直接到浏览器(比如 nodejs 服务端 和 古早的模板引擎)。 还有一种就是它走的是 JS ,再 某个 JS 文件中包含了数据,然后渲染到前端界面。
gitlight
302 天前
可能做 SSR 了
rockyliang
301 天前
@Nosub #29 ,文章里的 HTTPS 加解密流程图已经过时了,现在的 HTTPS 基本上都是使用 ECDHE 密钥交换协议,服务器的公钥每次都是随机生成的,并不会使用证书里的公钥来加密 AES 密钥
Promtheus
301 天前
很有可能是因为他请求的后台接口应用不是你前段看到的这个应用,是一个独立的应用。这样你就 f12 看不到了。抓包才可以看到

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

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

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

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

© 2021 V2EX