未分類 25 1 月 2022 迫于个保法,需要对 api 数据加密。想开发一套加密网关,有什么好的轮子推荐吗? 迫于个保法,需要对 api 数据加密。想开发一套加密网关,有什么好的轮子推荐吗? 資深大佬 : zhuifeng1017 30 目前定的加密规则是: 数据 body 整体用 AES 加密, 数据摘要用 RSA 签名。 实在不想自己造轮子,跪求各位大佬推荐下好用的框架或现成组件 大佬有話說 (25) 資深大佬 : iBugOne TLS 資深大佬 : eason1874 这样没办法给建议应该说清楚客户端和服务端的开发语言和软件环境 資深大佬 : swulling https 这个是满足需求的 資深大佬 : whwlsfb 防爬虫的话用什么加密算法也只是加长破解时间,建议从访问频率和客户端特征入手,防中间人的话 HTTPS 足够了 資深大佬 : justrand 不是很理解已经 TLS 了还要加密处理是出于什么考虑? 資深大佬 : qwe520liao 我也没太明白,只要你的终端能解密,那加密除了防止中间人还有什么其他的意义吗?还是说加密后的数据在终端是无法解密的? 資深大佬 : cominghome @justrand @qwe520liao 终端通过 js 解密,开启后访问 api 拿回来的 response body 是编码 /加密后的,我司网关有类似的功能。可以过滤掉很多脚本 boy 資深大佬 : datoujiejie221 实现起来也很简单,golang 的话 gin 写个 middleware 也很快,java 拦截器里实现也快研究过客户端的逆向,现在除了 flutter 不好逆向外,其他很快就可以逆向出密钥了,就像 4 所说,加密只是增加破解时间。 資深大佬 : qwe520liao 我记得三级等保有一条是要对入库的敏感数据进行加密,目的是为了防止被拖库以后泄漏关键数据,毕竟应用和数据库一般不在一台服务器上,同时被攻破的可能性要小得多。不过前端加密如果不是为了防止中间人的话,那我也只能是往增加难度或者过滤掉一部分自动化探测这方面去想了,属于应用层级别的要求,不过话说回来,与其增加的复杂度相比,带来的收益微乎其微吧。 資深大佬 : swulling https 符合个保法要求,只要你后台数据存储加密,最好权限和访问控制。没必要在 api 层面进行数据加密。 主 資深大佬 : zhuifeng1017 没有爬虫的考虑。针对 B 端业务的 API, 客户会上传 AES 密码和 RSA 公钥。主要目的就是 API 取到的数据是加密的,需要客户拿自己的 AES 密码解密 資深大佬 : wolfie 将整个 body AES 加密,使用表单提交。form_key:AES(json)Java 后端Filter 解密,创建一个 HttpServletRequestWrapper 实现。重写 getContentType 、getHeader 、getHeaders 、getInputStream 。把 Content-Type 修改为 application/json 資深大佬 : weiwenhao 密码都已经通过 https 传输了,为啥还要加密? 資深大佬 : ch2 直接 RSA 省事 資深大佬 : cxe2v 看起来是一个提供第三方服务的 API ,每个接入你 API 的客户都有自己的一套密钥,通过这个密钥给每个客户单独加密,这样可以防止一个客户伪造请求获取另外客户的信息,类似于各大平台的 Open API 資深大佬 : icyalala 数据内容是隐私,有 SSL 就没必要再加密吧?是不是被抓到敏感字段不允许传输的? 那样被发现的话,就会说是是通过技术对抗。 資深大佬 : jones2000 个保法跟加密有什么关系, 不明白。 資深大佬 : skinny 你肯定是理解错了要求…… 主 資深大佬 : zhuifeng1017 简单点说吧,客户传输数据中包含手机号, 姓名等个人敏感信息。除了 https 之外,还需要和客户协商敏感信息的加密算法。就想做个通用一点的加解密网关 主 資深大佬 : zhuifeng1017 @cxe2v 说的很对,很这个需求类似 資深大佬 : powerkai @cxe2v 我之前的项目对接的第三方支付是这样处理的。 資深大佬 : abeholder 我们之前也想找来着 ,后来基于 SpringCloud Gateway 做了一套通用的 ,用的国密的对称和非对称配合来做的,其实和 https 原理差不多了 資深大佬 : james2013 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 資深大佬 : daliu nginx 的 njs,最新版本支持 WebCrypto API.可以直接撸 rsa 主 資深大佬 : zhuifeng1017 @james2013 感谢大佬指教, 简单实用赞