安全设计的核心考量:
1.在协议被破解的前提下思考, 数据参数如何不可遍历,数据不能不变.
场景:
1. im系统给非组织内成员,非好友电话 , 默聊. 用次数限制. (基础系统) 做的更好点. 给发起者的每个被呼叫人分配一个动态callId. 关联到appDeveloperId,发起人callUid
2. im系统给非组织内设备拨打电话. 开放默聊. 用一个设备指定的动态token限制. 或者业务上加强限制,只能当前用户能访问.
安全的几个方面[1]:
1. 接口被大规模调用消耗系统资源,影响系统的正常访问,甚至系统瘫痪
2. 数据信息泄露
3. 伪造(篡改)数据,制造垃圾数据
4. App被仿制…
5. 假基站(钓鱼网站) -- 自动控制,密钥丢失. 避免一个人搞一个程序开关. 所有数据都必须依赖原 非对称key 验证. 只要中控不能被刷+各个物联内置 key 不被发现. 传输的 key 必须加密. 即使钓鱼网站也通不过验证
一旦加密算法被攻破,最近key 被识别就能被黑产用来软件开锁了. 但好在 key 时时更新.
安全思考边界:
1. 物联中控不被偷
2. 物联中控不被换
3. 锁不被偷
安全思考点:
1. 避免被黑产利用, 开发 app 软件, 普通用户购买软件使用自行车. 有别于撬锁,个人获利,黑产无法获利.
2. https 先非对称加密获取 key,然后对称加密传输. 可以定期更新 key.
参考文档:
[1] 浅谈API安全设计 http://www.jianshu.com/p/d7c52d113a68