1.接口使用一个key跟用户id md5加密。然后加密后的sign当参数传递(这样简单的加密方式安全吗?)。
2.那么问题来了,那如果用户的请求被抓到了,那不是别人也可以模拟请求。那如何知道请求是自己的APP发出的。如果只是请求头上带了app信息,那其他人也可以模拟。
3.因为接口从app发出,用户只有抓本地包才能看到这些信息。现在用户被别人请求包的情况容易出现吗?
强烈建议使用ssl来保护web api的通信安全,自己实现也未尝不可,但是肯定是没有ssl安全这是一定的。你这种做法会被中间人监听,sign直接会被拿到利用。
可以模拟请求。如果对方都反编译了你的app,鉴权过程都了解了,那么是绝对可以模拟的。
在没有ssl保护的情况下http都是明文传输,这种情况不是只有本地才能监听到。如果使用ssl保护通信安全的话,可以保证不被中间人监听。关于是否容易出现那就看你这个app的价值了。
推荐题主去了解下:中间人监听 重放攻击
之前我看人家是这么做的,有个专门的接口获取key,key的有效期是2天。之后调所有的接口,token直接用key加上对应参数格式,进行md5加密。也就是说参数是不带任何key的。一般来说,包会请求很多次,参数都会有变化,token就会不一样。而且,就算拿到key,不知道对方的组装方式也白搭。
可以试下Json Web Token
强烈建议使用ssl来保护web api的通信安全,自己实现也未尝不可,但是肯定是没有ssl安全这是一定的。你这种做法会被中间人监听,sign直接会被拿到利用。
可以模拟请求。如果对方都反编译了你的app,鉴权过程都了解了,那么是绝对可以模拟的。
在没有ssl保护的情况下http都是明文传输,这种情况不是只有本地才能监听到。如果使用ssl保护通信安全的话,可以保证不被中间人监听。关于是否容易出现那就看你这个app的价值了。
推荐题主去了解下:中间人监听 重放攻击
之前我看人家是这么做的,有个专门的接口获取key,key的有效期是2天。
之后调所有的接口,token直接用key加上对应参数格式,进行md5加密。也就是说参数是不带任何key的。
一般来说,包会请求很多次,参数都会有变化,token就会不一样。
而且,就算拿到key,不知道对方的组装方式也白搭。
可以试下Json Web Token