App 接口数据安全一般怎么处理?

2017-09-19 14:11:59 +08:00
 kim2x

目前在开发一款 App,过程中发现客户端和服务端传输数据可能会发生数据泄漏或者安全隐患,服务端采用的是 java,以主流的框架开发的 spring 为主,数据传输以 http 协议,格式为 json,对于敏感数据做了部分的安全处理,在客户端进行了数据加密再进行传输,但是响应结果以 json 暴露了出来,感觉有点不放心,不知大佬们有啥手段可以处理,我通过抓包拦截其他 app 请求,发现其响应结果都是被处理了,看到都是乱码字符,V 友们友 app 开发经验的希望可以多交流知道。小弟恭候 V 友们!!!

12383 次点击
所在节点    程序员
48 条回复
kohos
2017-09-19 15:46:45 +08:00
与其去想如何加密,不如去想如何在服务器端检查伪造数据和发包机器人。反正客户端都到用户手里,https 装个 fiddler 证书可以拦截,so 用 IDA 反编译也可以破解。市面也有不少安卓保护服务,但多逛逛看雪论坛也还是有不少被攻破的
kohos
2017-09-19 15:50:09 +08:00
补充一下 https 还是有必要上的,fiddler 只能拦截安装了破解证书的设备,其他人正常的设备一般是拦截不了的,就算在路由器网关上拦截到的包也是加密的
janus77
2017-09-19 15:55:57 +08:00
https
参数加个自加密的签名
服务器和本地时间校验
限制重复请求次数
l12ab
2017-09-19 16:00:18 +08:00
彻底的安全应该是没有,只能加大被破解的难度
http,加上 Pin 证书校验,URl 混淆,参数混淆,带 token 参数
vus520
2017-09-19 16:27:59 +08:00
看了一下,都说 HTTPS 能防解密???乱说什么大实话。所有通信,只要是最终会解密的,都有可能泄露。HTTPS 只能解决传输过程中不被篡改。

最安全的是,是请求加签名,通信做加密,其它的,就看遇到什么样的对手吧。
whileFalse
2017-09-19 16:38:12 +08:00
@vus520 #25 https + 客户端校验证书,客户端不被破解的情况下防解密。
z1113456051
2017-09-19 17:30:56 +08:00
不重要的参数加一个校验防止修改,重要的参数加密在传。
Kaho
2017-09-19 18:07:57 +08:00
我这里是 aes + rsa.
geelaw
2017-09-19 20:40:25 +08:00
上了 HTTPS 就没有别的需要做的了。

你的程序能做的,用户都可以做。如果系统上没有一种隔离你的程序和其他程序的功能,那么你的程序能做的,其他程序也能。
u5f20u98de
2017-09-19 20:56:58 +08:00
通讯安全:
tls+客户端强制证书校验,防止随便导入个信任证书就被抓包了。必要时可以进行双向 tls 认证。
协议安全:
1.对每个请求和回复进行摘要算法签名,附到包的结尾或者 header 里。实现过程需用 C 实现加大逆向分析难度,且算法也要复杂防止被暴力枚举出来,必要时可以对.so 加壳或者混淆。同时在 jni 调用时 C 的代码也要倒过来验证调用的 APP 是不是真正的 APP 防止被人直接拿来调用。
2.对请求和回复参数进行加密(可选),处理方法可以参考上一条。
kim2x
2017-09-19 21:08:20 +08:00
@zgbgx1 先上 Https
kim2x
2017-09-19 21:09:23 +08:00
@LeeSeoung 目前就先 https 之前做法的确 客户端解包就完蛋了
kim2x
2017-09-19 21:09:56 +08:00
@banksiae pb 没用 、不太清楚具体哪些好处
kim2x
2017-09-19 21:10:49 +08:00
@hugedata 哈 先上 V 油门都说到的 https
kim2x
2017-09-19 21:11:59 +08:00
@miaomiao0323 目前只在客户端传到服务端加密了 待修正
kim2x
2017-09-19 21:12:42 +08:00
@pangliang 先安慰下自己嘛
kim2x
2017-09-19 21:13:27 +08:00
@zhouyou457 base64 编码没啥用 ,
kim2x
2017-09-19 21:13:46 +08:00
@whatgui 哈 基本都说到了这个
wuhau
2017-09-19 22:21:45 +08:00
1. https.
2. 签名认证。一般 md5(key1+key2+key3) // 可以按照实际情况更改,可以防止一般的修改数值重放攻击。
3. app 加固,如果逆向出你的客户端协议,以上根本没卵用。
4. 返回数值用 rsa/aes 这种加密,可以增加对流量包抓包分析的难度。
5. 做好 api 权限控制,防止越权等情况出现。
6. 服务器安全加固(做了这么多,服务器账号密码都是 root,这都说不过去吧。)

=====
如果有什么不对,和需要完善的地方,还请各位指正/补充
imjeen
2017-09-19 23:21:55 +08:00
楼上很多说 HTTPS 协议,其实楼主想要的是 JWT 加密 JSON 格式数据

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

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

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

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

© 2021 V2EX