- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
从 API 开始
一个 App ,最核心的东西,其实就是数据,而数据的主要来源,就是 API 。我之前负责的项
目,因为 API 的坑已经受过了不少苦,因此,之后对 App 项目的架构设计我都会先从 API
开始。
制定安全机制
设计 API 第一个需要考虑的是 API 的安全机制。我负责的上一个项目,因为 API 的安全问
题,就被人攻击了两次。 之后经过分析, 主要存在两个漏洞: 一是因为缺少对调用者进行安
全验证的方式,二是因为数据传输不够安全。那么,制定 API 的安全机制,主要就是为了
解决这两个问题:
保证 API 的调用者是经过自己授权的 App ;
保证数据传输的安全。
第一个问题的解决方案, 我主要采用设计签名的方式。 对每个客户端, Android 、iOS 、
WeChat ,分别分配一个 AppKey 和 AppSecret 。需要调用 API 时,将 AppKey 加入请
求参数列表,并将 AppSecret 和所有参数一起,根据某种签名算法生成一个签名字符
串,然后调用 API 时把该签名字符串也一起带上。服务端收到请求之后,根据请求中
的 AppKey 查询相应的 AppSecret ,按照同样的签名算法,也生成一个签名字符串,
当服务端生成的签名和请求带过来的签名一致的时候,那就表示这个请求的调用者是
经过自己授权的,证明这个请求是安全的。而且,每个端都有一个 Key ,也方便不同
端的标识和统计。为了防止 AppSecret 被别人获取,这个 AppSecret 一般写死在代码
里面。另外,签名算法也需要有一定的复杂度,不能轻易被别人破解,最好是采用自
己规定的一套签名算法,而不是采用外部公开的签名算法。另外,在参数列表中再加
入一个时间戳,还可以防止部分重放攻击。
第二个问题的解决方案, 主要就是采用 HTTPS 了。HTTPS 因为添加了 SSL 安全协议,
自动对请求数据进行了压缩加密,在一定程序可以防止监听、防止劫持、防止重发,
主要就是防止中间人攻击。 苹果从 iOS9 开始,默认就采用 HTTPS 了。而关于在 Android
中如何使用 HTTPS ,Google 官方也给出了很多安全建议。不过,大部分 App 并没有
按照安全建议去实现,主要就是没有对 SSL 证书进行安全性检查,这就成为了一个很
大的漏洞, 中间人利用此漏洞用假证书就可以通过检查, 从而可以劫持到所有数据了。
因此,为了安全考虑,建议对 SSL 证书进行强校验,包括签名 CA 是否合法、域名是
否匹配、是不是自签名证书、证书是否过期等。
接口协议标准化
API 返回的数据,一般都是采用 JSON 格式进行传输。然而, JSON 的值只有六种数
据类型:
Number :整数或浮点数
String :字符串
Boolean :true 或 false
.
.
Array :数组包含在方括号 [] 中
Object :对象包含在大括号 {} 中
Null :空类型
我遇到过的,关于 API 的坑有大部分就是因为 JSON 数据和实体对象转化时出错导致的,
而且是各种各样的错误都有,其中
原创力文档


文档评论(0)