1
iBugOne 2021-11-16 08:05:46 +08:00 via Android
TLS
|
2
eason1874 2021-11-16 08:08:43 +08:00
这样没办法给建议
应该说清楚客户端和服务端的开发语言和软件环境 |
3
swulling 2021-11-16 08:38:32 +08:00 via iPhone
https 这个是满足需求的
|
4
whwlsfb 2021-11-16 08:46:26 +08:00 via Android
防爬虫的话用什么加密算法也只是加长破解时间,建议从访问频率和客户端特征入手,防中间人的话 HTTPS 足够了
|
5
yEhwG10ZJa83067x 2021-11-16 08:54:13 +08:00
不是很理解已经 TLS 了还要加密处理是出于什么考虑?
|
6
timethinker 2021-11-16 09:06:38 +08:00
我也没太明白,只要你的终端能解密,那加密除了防止中间人还有什么其他的意义吗?还是说加密后的数据在终端是无法解密的?
|
7
cominghome 2021-11-16 09:12:21 +08:00
|
8
datoujiejie221 2021-11-16 09:16:20 +08:00
实现起来也很简单,golang 的话 gin 写个 middleware 也很快,java 拦截器里实现也快
研究过客户端的逆向,现在除了 flutter 不好逆向外,其他很快就可以逆向出密钥了,就像 4 楼所说,加密只是增加破解时间。 |
9
timethinker 2021-11-16 09:20:04 +08:00
我记得三级等保有一条是要对入库的敏感数据进行加密,目的是为了防止被拖库以后泄漏关键数据,毕竟应用和数据库一般不在一台服务器上,同时被攻破的可能性要小得多。
不过前端加密如果不是为了防止中间人的话,那我也只能是往增加难度或者过滤掉一部分自动化探测这方面去想了,属于应用层级别的要求,不过话说回来,与其增加的复杂度相比,带来的收益微乎其微吧。 |
10
swulling 2021-11-16 09:21:04 +08:00 via iPhone
https 符合个保法要求,只要你后台数据存储加密,最好权限和访问控制。
没必要在 api 层面进行数据加密。 |
11
zhuifeng1017 OP 没有爬虫的考虑。针对 B 端业务的 API, 客户会上传 AES 密码和 RSA 公钥。主要目的就是 API 取到的数据是加密的,需要客户拿自己的 AES 密码解密
|
12
wolfie 2021-11-16 10:07:58 +08:00
将整个 body AES 加密,使用表单提交。form_key:AES(json)
Java 后端 Filter 解密, 创建一个 HttpServletRequestWrapper 实现。重写 getContentType 、getHeader 、getHeaders 、getInputStream 。把 Content-Type 修改为 application/json |
13
weiwenhao 2021-11-16 10:28:17 +08:00
密码都已经通过 https 传输了,为啥还要加密?
|
14
ch2 2021-11-16 10:36:09 +08:00
直接 RSA 省事
|
15
cxe2v 2021-11-16 10:36:13 +08:00
看起来是一个提供第三方服务的 API ,每个接入你 API 的客户都有自己的一套密钥,通过这个密钥给每个客户单独加密,这样可以防止一个客户伪造请求获取另外客户的信息,类似于各大平台的 Open API
|
16
icyalala 2021-11-16 10:42:02 +08:00
数据内容是隐私,有 SSL 就没必要再加密吧?
是不是被抓到敏感字段不允许传输的? 那样被发现的话,就会说是是通过技术对抗。 |
17
jones2000 2021-11-16 12:20:40 +08:00
个保法跟加密有什么关系, 不明白。
|
18
skinny 2021-11-16 12:52:51 +08:00
你肯定是理解错了要求……
|
19
zhuifeng1017 OP 简单点说吧,客户传输数据中包含手机号, 姓名等个人敏感信息。除了 https 之外,还需要和客户协商敏感信息的加密算法。就想做个通用一点的加解密网关 🐶
|
20
zhuifeng1017 OP @cxe2v 说的很对,很这个需求类似
|
22
abeholder 2021-11-16 14:15:07 +08:00
我们之前也想找来着 ,后来基于 SpringCloud Gateway 做了一套通用的 ,用的国密的对称和非对称配合来做的,其实和 https 原理差不多了
|
23
james2013 2021-11-16 14:16:24 +08:00
java Spring boot 中实现这个需求短时间内就能实现
首先在网关服务中自定义 GlobalFilter 实现类,先使用 hutool 的 SecureUtil.aes 进行解密,再验证签名,签名通过后,再包装成 1 个请求转发给对应的服务 可参考:https://github.com/ciweigg2/blog/blob/8f2487dbcaa1e60b7df742e4e253adcfeb1020bf/source/_posts/%E3%80%90SpringCloud%E5%AD%A6%E4%B9%A0%E3%80%91Spring%20Cloud%20Gateway%E4%BF%AE%E6%94%B9%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E5%80%BC(Greenwich%E7%89%88).md |
24
daliu 2021-11-16 16:18:24 +08:00
nginx 的 njs,最新版本支持 WebCrypto API.可以直接撸 rsa
|
25
zhuifeng1017 OP @james2013 感谢大佬指教, 简单实用赞👍
|