首页 >> 秀友百科词条 >> 网络工具软件 >> api接口权限控制

api接口权限控制[编辑]


概述
api接口又名应用程序编程接口,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而api接口权限控制则是防止别人调用api,当其他人想对应用进行编程时得以阻止。

一、api简述

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

二、api分类

(一)Windows API

API函数包含在Windows系统目录下的动态连接库文件中。Windows API是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。这在某种程度上很像Windows的天然代码。而其他的语言只是提供一种能自动而且更容易的访问API的方法。当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体,VB获取这个调用并经过分析后生成一个特定事件。

(二)linux API

在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。

三、api接口权限控制方法

1.加签名验证就行。提供密钥进行MD5。

2.首先,安全起见,最好使用HTTPS通信,以防止中间人截获。
其次,在HTTPS的前提下,对于API访问权限控制可以在,请求头里面添加一个字段传输Token(或者直接放在URL里面也行),该Token由服务器分配,服务器通过Token对用户权限进行权限控制。Token不合法,就不返回数据即可。

3.如果你的合法是未授权调用 那直接用类似appkey就可以了 如果非法使用别人的授权 只能绑定ip域名 没看各种app的key都被别人拿来用了么 比如weico的。

4.用公钥,MD5出来的加密串,再自己手动添加若干个字符串进去,看你怎么破?根本不算MD5,这个加密串,你一份,调用者一份,每次请求API的时候,构造方法里面先去验证这个token是否正确,如果不正确,说明别人在试探你的API,你直接发送404,告诉他找不到,故意去误导他,再来狠点,每个月去更换一次token,看你如何破?

四、api权限设计步骤

 1.假设我们需要访问的API接口是这样的:http://xxxx.com/openapi/v1/get/user/?key=xxxxx&sign=sadasdas&timestamp=2013-03-05 10:14:00&c=c&a=a&d=d

2.接口调用的控制器:openapi/v1/get/user/

3.步骤一:作为服务端,首先要检查参数是否正确:key (用户的key) ;sign(加密的签名串) ;timestamp (请求的时间,服务端对请求有时间生效),这些参数如果有一个参数没传递,肯定返回参数不正确的结果。

4.步骤二:参数如果都传递正确,这个时候需要检查API的白名单权限,API也就是(openapi/v1/get/user/)是否存在在我们的数据库中,一般会有一张API的数据表,如果调用的API不在我们的数据库白名单中或者这个API已经关闭访问了,那么要返回禁止访问的结果。

5.步骤三: 如果API在白名单中,那么现在就要检查用户的KEY是否正确了,服务端会有一张用户权限表,这个数据表主要用来记录用户的key secret(密钥) 以及API权限列表,检查这个用户对访问的API(openapi/v1/get/user/)是否有权限,如果有权限则通过,没权限则关闭。

6.步骤四: 如果用户权限通过,这个时候就到了最重要的一步,SIGN签名的验证。

签名算法:加密方式 md5(POST参数(升序排序,除key sign参数除外) + 用户密钥)

7.步骤五:检查时间戳时间,比较客户端时间和服务端时间是否在10分钟之内,如果10分钟之外了,那么返回超时的提示,这样能保证调用过的接口数据能在一定时间内销毁掉。

8.步骤六:调用相应逻辑

 

参考资料: segmentfault:https://segmentfault.com/q/1010000002419784 百度贴吧:http://www.cnblogs.com/angryprogrammer/p/4422550.html
扩展阅读:
相关词条:
合作编辑: 欧阳伯添 

秀友百科词条内容均由网友提供,仅供参考。如发现词条内容有问题,请联系管理员。

词条信息

浏览次数:22

编辑次数:0历史版本

创建者: 欧阳伯添

最近更新:2016/11/1 13:13:29

关于秀友百科| 版权声明| 联系方式| 常见问题

秀友百科是网络营销能力秀指定的教学实践平台

深圳市竞争力科技有限公司版权所有