浅谈Http API验证


### 前言

目前web应用主要面临的安全问题:

1. 数据篡改

2. 数据窃取

3. 重放攻击

4. 非法参数提交 (SQL注入,XSS等).

### 防范

  好了既然问题那么多,我们怎么其防范呢?经常在网上下东西的人可能会碰到这样的情况,就是你下载的资源会对应一个checksum.用这个校验码来确定本次你下载的东西,在下载过程中没有被人篡改,这个就叫数字签名。可能有人要问了,我们说的是HTTP验证的东西,跟这个有半毛钱的关系呀?聪明的朋友可能想到了,假如我们把每个HTTP请求都加上一个数字签名,那么数据篡改的问题是不是就可以避免的呢?答案是肯定可以的,因为HTTP请求验证方式中,有一种方式就是数字签名(http digest auth)。亚马逊很多校验请求用的就是这个方式。这种方式简单的说,就是客户端和服务端通过一些随机数+请求参数+URL+头部+时间戳等信息通过hash算法生成一个checksum,发送给接收端,接受端同样采用相同的算法,计算checksum是否一致来确定本次请求过程中数据有没有被篡改,从而保证了请求的合法性。

### 实施

上面说的这个原理中主要包含几个要素: 

- key:

  这个key只能是客户端和服务端知道,否则无法保证请求的合法性验证了。key的生成方式可以根据应用来区分:

  传统web应用:服务器可以根据客户端浏览器的信息,结合请求的IP,User-Agent等信息产生一个key。

  移动APP应用:可以通过事先约定key的方式(前提不能被反编译),或者通过一些非对称加密来生成一个key

  总的一点就是:这个key很重要,不能泄漏出去,上面的两个方法可以用来参考,如果看官们又更好的方法,欢迎讨论。

- Header:

  比如请求方法呀,请求路径之类的.

- 参数:

  构成本次合法请求的参数。

- 时间戳 :

  其实这个时间戳主要是用来防止重放攻击的。服务器端和客户端可以约定一个请求时间范围。超过这个时间段属于是非法请求。

接着我们将上面的三个元素通过一些不可逆的算法生成一个checksum,

如:hmac(key + header + params + ts + ...)

然后连同参数(URL,表单信息,sessionid等)信息一同传递给接收端,接收端根据相同的规则对数据进行验证。

### 展开思路

  因为每个请求都有唯一的checksum,那么我们可以在这个基础上加上鉴权功能,如某个Appid只能访问某个path

### 总结

上面方法中能保证的安全有两部分: 1,数据防篡改 2,重放攻击

要需要防止数据窃取,还是需要将https加入进来。

关于非法数据引起的一些问题,想必开发们也都碰到过,如果是防止sql注入最好在前端做一次参数检查,后端参数检查,用sql参数化的方式。xss攻击也是需要在各个点进行参数检查。

总的来说知道各种安全问题,才能写出健壮的程序来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,478评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,825评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,482评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,726评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,633评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,018评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,168评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,320评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,264评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,288评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,995评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,587评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,909评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,284评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,862评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,561评论 18 139
  • 1. 网络基础TCP/IP HTTP基于TCP/IP协议族,HTTP属于它内部的一个子集。 把互联网相关联的协议集...
    yozosann阅读 3,432评论 0 20
  • 第一章、HTTP概述1、Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的,HTTP是现代全球因...
    横冲直撞666阅读 631评论 0 1
  • 本文摘自 腾讯bugly 的文章《全站 HTTPS 来了》,内容有修改。 大家在使用百度、谷歌或淘宝的时候,是否注...
    bnotes阅读 3,634评论 1 9
  • 前天晚上,哥哥告诉我,大姨娘走了,我想想就掉眼泪。爷爷那边也有许多亲人,他们病故的时候,就没有这种深刻的感觉。心灵...
    月白风清张燕阅读 279评论 1 6