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

扩展阅读:

相关词条:

合作编辑: 欧阳伯添

秀友百科词条内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。

linux权限百度贴吧,api接口权限控制相关推荐

  1. 每天学一点flash(76)百度MP3音乐APi接口使用

    百度MP3音乐API接口及应用 http://cloud21.javaeye.com/blog/611914 这里有一篇关于百度MP3音乐APi接口的应用,写了一下关于这个百度接口的应用,他可以提供一 ...

  2. 百度搜索排名API接口PC返回JSON数据格式

    百度搜索排名API接口返回JSON数据格式 写个笔记, 记录一下 https://www.baidu.com/s?wd=新信息&pn=50&rn=50&tn=json 参数说明 ...

  3. 织梦php的api,DedeCMS提交百度熊掌号API接口PHP提交

    自己辛苦码的内容,被人扒了不算,还不留下版权,是不是心里不爽?百度一直在强调原创内容保护,但是总不让人满意.一些权重高的网站(非新闻源)采集了你的内容,许多时候排名比你的还高!因为对方拥有屌丝网站无法 ...

  4. 每天学一点flash 76 百度MP3音乐APi接口使用

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 百度MP ...

  5. Python调用百度人脸识别API接口检测颜值

    我们今天使用Python发送网络请求到百度人脸识别API接口. 我们需要requests模块,它需要安装,代码是 pip3 install requests 注意:不好意思各位,我的配额没了!如需使用 ...

  6. 百度云 php api接口调用 签名计算

    本文介绍百度智能云 计算签名 公共头 调用api接口调用: post请求示例 require "auth.php"; //此文件是百度云官网提供实例,下方可直接粘贴使用. // 第 ...

  7. 百度短地址 API接口 985.so 是一个免费且好用的短地址

    文档URL http://help.baidu.com/question?prod_en=webmaster&class=%CD%F8%D2%B3%CB%D1%CB%F7%CC%D8%C9%A ...

  8. 调用百度“车牌识别”API接口(go语言实现)

    调用百度的api识别车牌,没有GPU的机器,也没有大量的有标注的车牌数据,所以就只好拿别人现成的车牌识别api接口 具体的识别原理就不说了,只是调别人的接口而已,具体的调用文档百度已经给出: http ...

  9. 高德h5地图api接口_html5通过腾讯地图、高德地图、百度地图开发api接口获取坐标对应的周边信息...

    在通过 geolocation 获取到当前的 GPS 坐标后,需要通过"逆地理位置解析"才能得到街道对应的街道.建筑物.周边等相关信息. 下面我使用国内的三家主要的地图厂商(腾讯地 ...

  10. 在微信公众号中使用百度AI平台API接口

    1.百度ai接口接入的流程(以车型识别为例,输入图像,输出文字) req = requests.get(message.img) 通过request.get方法处理message.img,messag ...

最新文章

  1. vsftp认证之pam_mysql
  2. 字符串互换后字典序最小
  3. php5.6.30环境报错Call to undefined function ImageCreate() 编译安装 gd库
  4. 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析
  5. Leetcode69场双周赛-第二题5961.链表最大孪生和
  6. Nsight2.0安装及单机调试(CUDA4.0)设置经验
  7. 开源的49款Java 网络爬虫软件
  8. 2017-2018-20172309 《程序设计与数据结构》第五周学习总结
  9. 拉普拉斯矩阵(Laplacian Matrix) 及半正定性证明
  10. ArcGIS三维制作步骤
  11. u大侠装服务器系统,U大侠一键U盘装系统装机UEFI二合一版
  12. 【图文说明】屏幕录像专家如何安装、录制小文件的录像
  13. Win8电脑插入耳机 无声音
  14. java实现鼠标宏编程_对键盘鼠标宏处理--按键精灵让我们不要重复工作
  15. 机器学习规则学习_使用机器学习发现动作规则
  16. 什么是UserAgent
  17. efi启动修复linux引导文件夹,一次修复linux的efi引导的集中方法总结记录
  18. 什么是招标?招标的组织形式有哪些?
  19. 台式电脑显示无法自动修复此计算机,windows无法自动修复此计算机怎么解决
  20. Thread的interrupt()方法排雷

热门文章

  1. DHCP报文及其格式
  2. 安信可IDE 1.5编译ESP8266 RTOS 3.0
  3. mtouch 3d gis,m3dgis,mtgis,mgis 多点触摸三维电子沙盘可视化交互系统教程第17课
  4. 华创e路航固件_华创e路航地图官方版
  5. java nio为什么是非阻塞_为什么java nio被称为同步非阻塞io?
  6. 魏德米勒端子eplan宏_魏德米勒端子选型图册(完全版).pdf
  7. Meanshift均值漂移聚类算法
  8. 差别-request.getParameterValues与request.getParameter
  9. DoS和DDoS攻击
  10. 靶机渗透练习Vulnhub DriftingBlues-6