API安全实战
上QQ阅读APP看书,第一时间看更新

1.1 打个比方:参加驾照考试

为了说清API安全的一些概念,我们以参加驾照考试做个类比。你可能觉得这跟API及其安全性没什么关系。请继续往下看,故事的各个方面与本章学习的关键概念有很多相似之处。

假如你通常在下午5点准时下班,但今天特殊。平常下班回家,你都会照看家里的食肉植物,然后倒在沙发上看电视,但是今天你得去参加驾照考试。

下班后,你冲出办公室,穿过公园去赶公交车。当你从热狗摊前排队的人群中跌跌撞撞地穿过时,你看到你的老友Alice正在遛她的宠物羊驼Horatio。

“嗨,Alice”,你兴高采烈地跟她打招呼,“你的18世纪巴黎小剧场准备得怎么样了?”

“挺好的!”她回答,“你该赶紧来看看”。

她做了一个大家都明白的“打电话给我”的手势,之后你们就各自离开了。

当到达考试中心的时候,由于挤公交,你觉得有点热而且有些烦躁。这时你就想要是能开车该多好。过了一会儿,考官出来做自我介绍,然后开始检查你的学员驾驶证,并仔细核对贴在学员驾驶证上的照片,照片里的你发型糟糕,但在拍照的时候你还觉得自己很酷。经过几秒钟的核对后,他确认照片和你本人一致,你可以参加考试了。

了解更多 大多数API需要鉴别与其进行交互的客户端。正如上文那个虚构的故事中描绘的,不同情况下的客户端有不同的鉴别方法。就像跟Alice打招呼,是基于以前的互动历史建立起了长期的信任关系,而在其他情况下,则需要更正式的身份验证,比如出示学员驾驶证。考官认可学员驾驶证,因为它是受信任的机构颁发的,并且上边还有你本人的照片。有时API允许某些操作的执行只需进行很少的用户验证,而另外的一些操作则需更高级别的用户身份确认。

本次考试你未能通过,考完后你决定坐火车回家。你买了一张回郊区的标准车厢车票,但这时你觉得有些不舒服,所以打算偷偷溜到头等车厢去找个座位,但服务员挡住了你的去路,并检查了你的车票,你只能老老实实地回到标准车厢,戴着耳机坐到座位上。

回家后,你看到电话答录机上的灯在闪烁。哎,你都快忘了你还有一个电话答录机了。是Alice,她邀请你去镇上一家新开的俱乐部玩。你觉得晚上去玩一会儿可以振作一下精神,所以你决定应邀。

到达目的地后,俱乐部的门卫看了你一眼。

“今晚不行”,她用不太友善的口吻对你说。

恰在此时,一位著名人士走过来并被指引着直接进入了俱乐部。这让你觉得非常沮丧,索性直接回家了。

你需要休个假,所以给自己订了两周的豪华酒店。不在家的时候,你把你家中热带温室的钥匙给了你的邻居Bob,请他来帮忙喂养你收集的食肉植物。离家之后,Bob瞒着你在你家的后花园举办了一个盛大的聚会,邀请半个小镇的人来参加。由于事先准备不充分,他们在聚会上喝光了你的饮料,但幸运的是并没有造成什么真正的损失(除了Bob的名誉)。你那些名贵的威士忌仍然锁在安全的地方。

了解更多 除了识别用户外,API还需要决定用户拥有什么级别的访问权限。可以基于用户本身的身份,比如名人进入俱乐部,或者基于一张限时使用的凭证,比如火车票,或者一个可长期使用的密钥,比如借给邻居的温室钥匙。

当你旅行回来,你通常会看一下你的全方位摄像(有人认为全方位这种说法有些夸大其词)监控系统里的录像。之后,你把Bob从你的圣诞卡清单上划掉,暗下决心以后再也不请人来照看植物了。

当你再一次遇到Bob的时候,你质问他派对的事。开始的时候他还想抵赖,但当你指向摄像头时,他只得承认了。之后,他给你买了一个可爱的维纳斯捕蝇器以表示歉意。摄像头拥有非常好的类似“日志审计”的优势,当出现问题时,就能找出是谁做了什么。必要的时候,这可以让行为人无法抵赖做过的事,以此证明事情就该由他来负责。

定义 审计日志(audit log)记录了系统上重要操作的详细信息,方便日后推断出是谁在什么时间做了什么事。审计日志是研究潜在安全漏洞的重要依据。

到现在为止,你对API安全有关的机制大概有了一些了解了。在深入介绍细节之前,我们先来回顾一下API是什么,以及它的安全性意味着什么。