api的安全问题
在给第三方系统提供api时,我们需要注意下安全问题。
比较常见的接口有http接口。以http接口为例。我们需要注意的几点:
1.只有被允许的系统才可以调用api
2.如果http请求被截获。也不能随便修改接口中的参数。
在运维方面,可以添加访问白名单。白名单中有一系列的ip地址。只有白名单中的ip才可以访问api。但是这样会给运维造成麻烦。比如应用的ip可能会变化。
下面说下一种比较容易实现的api安全方案吧。
比如要让a系统访问我们的api接口。可以给a系统分配一个appName和一个appKey。
如:appName=app1.appKey是一个guid。
应用a调用我们的接口时,在参数中,除了接口必须的业务上的参数外,还需要提供一个appName参数,一个secretKey参数。appName就是分配的app1.secretKey是一种根据业务参数,appKey,由某种算法得出的值。
比如:得到appSecret的算法可以是:
业务参数+appName+appKey,再进行md5加密等。
http://localhost:8080/api/addUser?id=123&name=leo&password=hello1234&usertype=2
业务参数就是“id=123&name=leo&password=hello1234&usertype=2”
+appName=“id=123&name=leo&password=hello1234&usertype=2&appName=app1”
将上面的值+appKey,再进行md5加密等。
最终的url请求大致如下:
服务端收到请求后,
根据appname,找到对应的appKey。
再根据算法,“addUser?id=123&name=leo&password=hello1234&usertype=2&appname=app1”+appKey,再进行md5加密,如果得到的=appsecret=546rtf564thft456fth56jh54tfg5454gfhgf
表明,该请求时被授权的。
只要a系统不将appName和appKey全部泄漏,别的系统就不能调用我们的api。
如果上面的url被截获了。那么第三方系统就可以发出这个请求了。因为他已经知道了url了,虽然他不知道我们的appkey。但是如果他想修改接口中的参数是不可以的。一旦,他修改了参数,appsecret就不对了,因为不知道appkey,在修改了参数后,也不知道对应的appsecret。
那,如果攻击者一直调用上面被截获的接口怎么办呢?很简单,在url中再添加一个当前时间戳。
即:appsecret变成:业务参数+appname+当前时间戳,在md5加密。
服务端接受到请求后,获得时间戳。如果时间戳和当前时间相隔很小,该请求时有效的。不然是无效的。
如果攻击者修改时间戳怎么办?如果修改了时间戳,appsecret就不对了。
所以,该方案的前提是应用的appName和appsecret不能全部泄漏。appname可能会泄漏。但是appkey决不能泄漏。
api的安全问题的更多相关文章
- duilib学习 --- 360demo 学习
我想通过360demo的学习,大概就能把握duilib的一般用法,同时引申出一些普遍问题,和普遍解决方法.并在此分享一些链接和更多内容的深入学习..... 原谅我是一个菜鸟,什么都想知道得清清楚楚.. ...
- App架构经验总结(转)
原文链接: http://keeganlee.me/post/architecture/20160303 架构因人而异,不同的架构师大多会有不同的看法:架构也因项目而异,不同的项目需求不同,相应的架构 ...
- App架构经验总结(转载)
原文地址:http://www.iteye.com/news/31472 架构因人而异,不同的架构师大多会有不同的看法:架构也因项目而异,不同的项目需求不同,相应的架构也会不同.然而,有些东西还是通用 ...
- App架构经验总结
作者:李纪钢,网名 Keegan小钢,博客地址:http://keeganlee.me.目前在广州日报新媒体有限公司,负责移动产品的研发工作. 关于:本文整理自CSDN架构主题月子活动金牌架构师微课堂 ...
- APP和服务端-架构设计(一)
架构因人而异,不同的架构师大多会有不同的看法:架构也因项目而异,不同的项目需求不同,相应的架构也会不同.然而,有些东西还是通用的,是所有架构师都需要考虑的,也是所有项目都会有的需求,比如API如何设计 ...
- Service_Worker XSS
0x00 简介 Service Worker 是 Chrome 团队提出和力推的一个 WEB API,用于给 web 应用提供高级的可持续的后台处理能力.该 WEB API 标准起草于 2013 年, ...
- node十年心酸史,带你了解大前端的由来!
前言 近年来,随着前端的丰富,前后端分离是趋势.各种东西如雨后春笋一般,层出不穷.node.js的出现,使前端真正意义上变成了大前端. 前端由来之HTML发展史 1990 年,Tim Berners- ...
- Web API 安全问题
目录 Web API 安全概览 安全隐患 1. 注入(Injection) 2. 无效认证和Session管理方式(Broken Authentication and Session Manageme ...
- 【JAVA8新的时间与日期 API】- 传统时间格式化的线程安全问题
Java8之前的日期和时间API,存在一些问题,最重要的就是线程安全的问题.这些问题都在Java8中的日期和时间API中得到了解决,而且Java8中的日期和时间API更加强大. 传统时间格式化的线程安 ...
随机推荐
- JavaScript编写了一个计时器
初学JavaScript,用JavaScript编写了一个计时器. 设计思想: 1.借助于Date()对象,来不断获取时间点: 2.然后用两次时间点的毫秒数相减,算出时间差: 3.累加时间差,这样就能 ...
- Sharepoint 2013 左右"SPChange"一个简短的引论
于SharePoint于,我们经常需要获得这些更改项目,竟api为我们提供SPChange物.下列,在通过我们的目录资料这一目标. 1.创建测试列表,名字叫做"SPChangeItems&q ...
- 打破了中国电信华为无线路由猫(HG522-C)自己主动拨号+任意数量的计算机+iTV
中国电信路由猫去势后总是我的好E家里到处都是卖包(够坏垄断市场.有霸王条款多,例如,他们必须用自己的手机,同时计算机的最大数量的在线等),我曾破获另一家中国电信路由猫.非常easy,由U它磁盘恢复默认 ...
- CSharp设计模式读书笔记(9):组合模式(学习难度:★★★☆☆,使用频率:★★★★☆)
组合模式(Composite Pattern): 组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构.组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可 ...
- centos5.8本地安装yum资源,安装软件包
首先 [root@mode media]# cd /etc/yum.repos.d/ [root@mode yum.repos.d]# ll total 16 -rw-r--r-- 1 root ro ...
- mysqldump报错
在使用mysqldump命令备份整个数据库的时候,报错例如以下: mysqldump: Couldn't execute 'SHOW TRIGGERS LIKE 'userlog'': Got err ...
- 第39届ACM亚洲区域赛牡丹江赛区赛后总结
2014年10月10日,周五,早晨匆匆忙忙的出了寝室,直奔复印社去打了两份模板,然后直接就去上课了.第三节课下课,直接跟老师讲了一声,就去实验室跟学长们汇合了.12点半,踏上了开往牡丹江的列车,我们那 ...
- jQuery插件——多级联动菜单
jQuery插件——多级联动菜单 引言 开发中,有好多地方用到联动菜单,以前每次遇到联动菜单的时候都去重新写,代码重用率很低,前几天又遇到联动菜单的问题,总结了下,发现可以开发一个联动菜单的功能,以后 ...
- ASP.Net MVC请求处理流程
ASP.Net MVC请求处理流程 好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人& ...
- 反射调用方法报InvocationTargetException异常
利用 Method 对象的 invoke 方法调用目标对象的方法时, 若在目标对象的方法内部抛出异常, 会被包装成 InvocationTargetException 异常抛出, 可以通过调用 In ...