欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

怎样打造安全的API(part1)

来源:本站整理 作者:佚名 时间:2017-09-14 TAG: 我要投稿

API驱动的天下
毫无疑问,跟着光阴的推移,咱们所生涯的天下正在变得愈来愈慎密。新的办事正在呈现,目的是使咱们的生涯更简略,更高兴。在一切这些变更的面前,这些办事的组合是一种真正进入自己的技巧:API驱动架构。这些API容许办事在法式级别互相通讯,并供给别的办事可以或许以自己有效的方法花费和应用的可猜测的相应功效。
假如你在曩昔七,八年内不停在停止着任何情势的开辟,那末你可以或许会碰到某种情势或前卫的API。大概你为你的公司创立了一个API,或许你是一个守业公司,而API 便是你的产物。这几天有个笑话是,假如你没有API,那末你的办事久曾经落后于时代。
但是,伴跟着API的创立也会发生一些迟疑。开辟职员在前端,面向客户的开辟和功效方面加倍温馨,在深刻懂得API的进程中,可以或许会感到到其构建的深度。固然根基的常识仍旧存在(如HTTP哀求/相应和输出处置),但它们的实现方法存在分歧的成绩。表现层被完整删除,重点放在被同享的数据上,而不是它的表面。你的义务是订定一些功效和实用性,使其具备更好的演示性和用户体验。
这里有一个简短的阐明 - 本文将重点先容REST API,而不是SOAP(或RPC)。REST在API范畴曾经显著地抢先,假如你筹划实行新的API,那这确定是你抉择的偏向。
假如一个开辟职员对付API的天下来讲是绝对陌生的,那末很天然的偏向便是做出“只是事情”的器械 - 在特定的端点上接管数据哀求,并答复所哀求的婚配。固然这是终极的目的,然则在创立API时也有个事情异样紧张:做出抉择并做好充足掩护的事情。这很容易理解,因为它是一个API,只要别的的“机械”会措辞,它的安全性可以或许比面向客户的应用法式加倍宽松。明显,没有甚么可以或许从真相中更进一步。然则,在确保面向客户的对象中不必要的API时,就必要斟酌到这些成绩。让咱们先来看一下这些观点和斟酌身分,
观点
起首,让咱们来谈谈无关掩护API的一些根基常识。要开端这个话题,我会在这里先说一件事 - 稍后将先容掩护API的方法并非独一的方法。这只是一个方法,我曾经放在一路阐明了一些API的根本安全观点。有一个环球性的API掩护筹划,他们应当在你确定以前停止评价。我将展现的方法对付一个盼望安全的API来讲非常棒,然则不盼望别的体系可以或许带来许多开支。
咱们将应用的方法是应用“同享密钥”体系,此中API和客户端都具备用于认证和发送新闻的机密信息(在这类环境下为令牌)。我看到一些相似体系的体系实现,并应用一个体系,每一个哀求应用一个动态标志。然则,假如攻击者发明了这个令牌,这可以或许会招致严重的成绩。攻击者可以或许模仿用户的新闻并潜伏地绕过验证机制。
我这里说的不是一个繁多的令牌体系,我曾经抉择了一个多重令牌,可撤消的体系,让用户创立他们想要的令牌,描写他们的应用,另一个紧张的利益 - 随时撤消它们。假如你是GitHub用户,那末你可以或许认识它的令牌体系。它以相似的方法事情,只必要增加更多元数据。
假如你认识OAuth v2的处置进程,那末这个设置听起来久很认识。与OAuth事件有一个相似的机密令牌和先后切换,但这里会涉及到更多的器械。别的请记着,计划OAuth并非紧张用于身份验证。其紧张目的是受权。比方,斟酌在网站上看到的一切“应用Twitter登录”功效。当你点击该按钮时,应用法式会将你返回到Twitter站点并请求得到受权同意。你点击“容许”按钮,流程就会继承。这便是OAuth,它正在处置幕后的事情。应用该流程,你就曾经受权应用法式应用你的Twitter信息来辨认你。但是,到Twitter可以或许登录你的帐户时,另一个应用法式实在不晓得你能否真的是你所说的 - 他们曾经接管了危险,并将这一决议移交给了Twitter。
在这里有一个如许的正告:在应用像如许的基于令牌的体系时,请确保所哀求的URL中不因此令牌停止的。默许环境下,URL哀求会记载到Web办事器日记中。假如你的URL中的令牌(特别是性命周期比拟长的)被攻击者得到,一切的攻击者必需做的是找到你的日记存储的地位,并拜访他们想要的一切令牌。
在咱们将要创立的体系中,还将有另一个方面的令牌来赞助进步他们的安全性 - 限定他们的有效光阴。我在这里评论辩论的令牌是认证后的哀求中所应用的令牌,而不是用于身份验证的令牌。经由进程限定这些令牌“存活”的光阴,咱们可以或许削减攻击者被拦阻和从新应用的可以或许性。在咱们的体系中,会将token的有效光阴限定为1小时。这个光阴内平日足以让用户可以或许应用API胜利运转,但仍旧必要为哀求供给充足的掩护。
适时牌过时时,客户端将被发送一个对于认证失败的新闻,他们只必要哀求一个新的令牌。在OAuth的天下里,他们发送一个“刷新令牌”,它专门用于这类令牌“refetch”哀求,然则因为咱们在这里搞了一个更简略,更轻的版本,以是咱们只必要保持手动请求得到新的令牌就行了。
根本流程
我曾经描写了这个API的运作进程,然则让我花一些光阴来遍历失常会话的流程,包含身份验证和残剩的哀求。
1.令牌创立
咱们将会把用户进入应用法式的治理部门当成次进程的开端,并天生用于身份验证进程的新令牌。该令牌是一个随机的字符串,数字和标记,在认证哀求时代(而且仅用于)应用。
2.认证
一旦咱们拥有了令牌,用户将向API上的端点收回一个POST哀求及其凭证:用户名和“暗码”的令牌。如后面所述,你不盼望将此哀求应用GET方法,因为这会将凭证信息表现在办事器日记中...这是一件不好的事情。
对令牌和所供给的用户名停止查找,并确保婚配。假如统统都很好,那末相应将包含咱们随机天生的有光阴限定的令牌,用于以后会话。该令牌用作如下哀求中的标识符,并确保正在发送的新闻未被窜改。假如用户在该令牌仍旧有效的光阴内履行另一个认证哀求,则每次都邑赐与新的令牌,以进一步低落潜伏攻击者的令牌拦阻和重用的危险。
3.追随哀求
有了这个令牌,客户端就可以或许向API中的别的端点收回哀求。咱们的体系今朝不会强迫履行任何权限,只要曾经认证的网关。在一个真正的API中,必要有一个更繁杂的体系来赞助掩护各个端点,并确保只要应用它们的用户能力拜访。

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载