API 安全

什么是 API 安全

API 安全主要包括信息安全网络安全应用安全三个方面

信息安全

信息安全是你要保证系统所有的信息在它的整个的生命周期中,它应该是受到保护的,是安全的
所谓整个生命周期包括信息从创建开始、到存储、到转换、到备份、甚至到销毁

网络安全

  1. 信息通过网络传输的过程中是安全的,不会被人盗取或者篡改
  2. 你也应该保证在网络上不会被未授权的访问接触到你到信息

应用安全

应用的设计上抵挡各种攻击,防范各种风险

API 安全的目标

Confientiality 机密性

确保信息只被预期的用户访问

Integrity 完整性

防止未授权的创建、修改、删除

Availability 可用性

当用户需要访问 API 时,服务总是可用的

常见的 API 风险【 STRIDE】

1. Spoofing 欺骗

伪装成某人【例如,我不是系统管理员,但是我伪装成系统管理员,然后我想干什么干什么】

2. Tampering 干预

将不希望被修改的数据、消息或设置改掉【比如说修改法币订单的状态,用户把钱付了后,允许用户把订单的状态从未付款变为已付款,但是不允许用户在修改自己订单的时候,把其他人的订单也修改了】

3. Repudiation 否认

拒绝承认做过的事情【比如说用户需要退款,然后我们给它退款了,但是他拒绝承认已经退掉的款】

4. Information disclosure 信息泄漏

将你希望保密的信息批漏出来【如用户信息的泄漏】

5. Denial of service 拒绝服务

拒绝用户访问信息和服务【最常见的是DDOS 攻击,把你的服务压垮,把你的服务都堵住,让你没法为用户提供服务】

6. Elevation of privilegelege 越权

做了你不希望他能做的事

应对上述风险的安全机制

流控

解决了 拒绝服务 的 API 安全风险
流控可以防止用户请求淹没你的 API

认证

解决了欺骗的 API 安全风险
认证可以确保你的用户或者客户端真的是他【它】们自己

审计

解决了 否认的 API 安全风险
审计可以确保所有操作都被记录,以便追溯和监控

授权

解决了信息泄漏干预越权的 API 安全风险
授权可以确保每个针对 API 的访问都是经过授权的

加密

解决了信息泄漏的 API 安全风险
加密可以确保出入 API 的数据是私密的

API 安全.png

下面详细介绍各种安全机制

流控

  1. API 过载时拒绝多余的请求
  2. 限流机制生效后,请求应该立即被拒绝,并返回 HTTP 状态码 429【To Many Request】

认证

所谓认证就是验证用户身份是否合法的过程;
认证的作用是验证用户传进来的用户身份【比如校验用户传过来的请求头 Authorition】
登录是 用户获取身份证明的一个过程【用于用户获取身份】

认证和登录的区别

  1. 在一段时间内【一天或者一个月,这个我们可以控制】,登陆这个行为往往只发生一次,我们使用某个网站的时候,可能很长时间才去登陆一次,登陆的信息会保存一段时间
  2. 但是认证这个行为是你每次请求去调业务逻辑都会去执行的一个动作
  3. 认证这个行为不管成没成功,或者有什么问题,都要往下走,它和登陆不一样
  4. 登陆一旦有问题,就断掉了,不会往下走;比如你登陆的用户名、密码填错了,就直接抛异常了,不会往下走了
  5. 但是认证的时候,比如你传进来的用户身份有问题,或者你根本没有传用户身份,认证机制根本就没起作用,不管是什么情况,你仍然要往下走,需要在后面的审计记录去记录这次身份认证的结果是怎样的
  6. 最终的请求是否通过是由授权来决定,不是由认证来决定的
  7. 你的认证机制可能根本没生效,你也不知道当前用户是谁,但是这个请求有可能是可以过的,比如说获取商品信息,那么这个服务请求不管用户登没登陆,用户都能看公司的商品,所以不管你的认证机制成功或者失败,生效还是没生效,都要往后走。 最后结果是怎么样的,由授权机制决定的,能不能访问是由授权来决定的

审计日志

  1. 审计应该放在认证之后,授权之前
  2. 认证之后,你才能知道这个请求到底是谁发出来的,谁在做这个事情
  3. 而放在授权之前,那些被拒绝掉的请求在响应的时候也可以记录下来
  4. 如果把审计放在认证之前,那么你是不知道请求是谁发的
  5. 审计用于记录谁在什么时间干了什么事情
  6. 审计日志一定要持久化
  7. 审计日志要做两次,一次是进来的时候做,一次是出去的时候做

授权

作用

授权用于做访问控制的

遵循的规则

要遵循最小的授权原则【一个用户只给他必须要的权限,不要的权限都不给他,什么时候有需要时再申请】

授权可能需要检测请求端的两个核心内容

  1. 是否已经进行了身份认证
  2. 是否有权限

做授权处理时需要考虑的两件事情

1. 你的请求是不是需要身份认证或者需要权限控制

  • 有些请求是根本不需要权限控制的,比如说搜索,商品信息的查看,这些请求往往是没有权限控制的。也许用户感觉不错,就注册使用了
  • 但是另外一些请求,比如说进行交易就是一定要有身份认证,一定要知道你是谁,才能下单
  • 所以说第一个判断就是要判断一下当前这个请求是不是需要身份验证,如果需要身份验证,但是你当前用户没有认证,这个时候我们应该返回状态码401【即在要身份认证,但是认证失败】

2. 判断你有没有权限

  • 如果没有权限,则返回403【403代表你身份认证成功了,但是不能去做请求的这个操作】
  • 比如一个用户,用户密码填写对了,但是不能删除订单,删订单只有我们后台权限很高的管理员才能删除订单

HTTP 状态码 401和403的区别

  • 401可以通过调整自己的身份信息来避免这个错误的【即把账户和密码改对】
  • 但是403不一样,403对情况下,不管客户端在这个请求上做任何修改都不会导致这个403过去,只有一种情况,即访问用户必须向授权方要了权限,才能过这个403

权限控制的两种方式

【即检测用户是否有权限访问该 API】【不管是哪种,访问控制最终要控制的都是一个事情,就是这个用户能干什么】

1. ACL【Acess Control Lists】

  • 是直接把用户和权限进行绑定【即A能做什么,B能做什么】
  • 实现简单,但是管理复杂,如果有1000个用户,则需要配置1000个用户能干什么,不能干什么
  • 简单易用,实现容易,无法满足复杂的业务需求,不易管理
    2. RBAC 【Role Based Access Control】
    引入角色概念,简化管理。开发起来相对 ACL 复杂
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容