-
-
如何确保API在企业的安全使用
-
发表于: 2014-4-27 20:36 711
-
新闻链接:http://netsecurity.51cto.com/art/201403/433767.htm
应用编程接口(API)一直是信息安全领域的热门讨论话题,这是有原因的:最近的一些高知名度网站安全泄露事故(包括Pinterest和Instagram)都涉及API。
在2014年1月,Snapchat数据泄露事故导致约460万用户受影响,而该事故的根源就是不安全的API。虽然API并不是直接攻击目标,但API允许攻击者大规模匹配Snapchat用户的手机号码与用户名。
在本文中,我们将探讨不安全的API如何以及为何会给企业及用户构成重大风险,并解释安全团队应该怎样做来提高人们的安全意识、保护现有企业软件中的API,以及如何安全地使用API数据。
什么是API?
API是指一组函数或例程,它们用于完成特定任务或提供简单方法来与软件组件进行交互,通常允许自动化常见流程,例如与在其他机器上运行的服务器进行交互。
API可以是一个库,其中包括例程、数据结构、对象类和变量的规格,或者只是暴露给API使用者的远程调用的规格。一些API是基于国际标准(例如可移植操作系统接口,POSIX),而另一些则是以开源或供应商文档形式公之于众。例如,微软的Windows API让开发人员能够为Windows平台创建软件。
为了产生潜在收人来源和商业机会,企业正在越来越多地通过API来交付其业务应用程序和数据。此外,Web 2.0也推动了Web API使用量的激增,让用户与程序可以与在线应用程序背后的核心数据进行交互。亚马逊云计算服务就是最好的例子,它使用API来让用户访问其各种服务,例如EC2。
通过公开化API,企业可以提高合作伙伴连接性和云集成,并能够更好地向客户提供服务。同时,第三方也可以开发应用程序,为用户提供额外的功能,并帮助提高企业服务和产品的知名度和部署率。
根据Layer 7 Technologies公司的最新研究显示,超过43%的受访者称其企业目前已经部署了API计划,而27%表示,在未来一年内将会推出这样的计划。Facebook平台就是API取得成功的一个很好的例子;Facebook提供的API让开发人员创建数百应用程序和服务,访问Facebook及其用户的数据,这无疑显著推动了Facebook的发展和成功。
Web API(例如来自Facebook的API)通常是超文本传输协议请求消息,返回结构化响应消息,最常见的是可扩展标记语言或JavaScript对象符号格式。这种API快速取代了基于简单对象访问协议的Web服务和面向服务的架构;因为它们更容易部署,并且更适合创建一个开放架构,以在应用程序和用户之间共享内容和数据。
API安全问题以及如何避免它们
除了诸多优点外,应用编程接口也存在安全问题,正如最近的安全泄露事故所显示的。安全问题通常不在于API背后的概念,而在于它的编码方式。很多应用开发人员在编写或使用API时没有考虑安全因素,使得应用和数据处于危险之中。当涉及API时,糟糕编写的代码很快就会变成危险代码。
所幸的是,企业及其开发人员可以采取一些措施来加强和确保API在企业环境的安全性。
在开发过程(当然是在发布应用之前)中,安全专家应该手动检查API代码,以测试它是否可能被攻击者滥用或误用。文档记录也很关键,清楚记录的代码让安全人员可以看到API应该以及不应该做什么,并让整合API到应用的人了解如何正确部署API。
在文档中,开发人员应该明确如何调用API、哪些数据将被返回以及以何种格式,还有可能出现什么错误消息。内部记录还应该指明谁可以访问API以及哪些信息将被记录以确定哪些资源出于审计目的被谁在何时访问。在访问的话题上,在适当的时候,机器ID应补充身份验证检查。并且,还应该检查每个API调用以确保用户或设备有正确的权限来查看、编辑或删除所需信息。然而,在用户身份验证后,很多开发人员通常省去了二次访问控制检查。
对于检查API如何处理突发性输入和请求,黑盒测试和模糊测试是关键。同样重要的是,通过数据验证例程来防止标准注入漏洞和跨站请求伪造攻击,因为调用API可能来自不受信任的来源。此外,应该在所有类型的端点进行测试,而不只是对web浏览器。通过非浏览器应用(例如移动应用)访问时,很多API未能部署SSL,所以一定要确保数据始终是加密状态--当没有要求纯文本格式时。渗透测试和漏洞评估也应该侧重于API,因为它们是应用的接入点。
试图利用第三方的API的企业必须确保其开发人员完全了解如何安全地部署它们,并验证所有来自这些API的响应。很多开发人员(无论是来自第三方还是内部开发人员)喜欢重复使用互联网发现的代码,特别是涉及如何调用特定API时。然而,复制和粘贴代码,而不检查它是否适合于特定内容,这是API相关漏洞进入应用的常见情况。
企业必须记住:虽然开发速度可能很重要,但对细节的注意也很重要。开发人员必须仔细阅读API文档,永远不要依赖于互联网上的道听途说。企业的开发时间表应该给开发人员足够的时间来了解如何正确地部署API,以及了解API可能带来的潜在风险—特别是当涉及共享用户数据时。糟糕编写或部署的API可能引入攻击向量,并增加了与机密性、完整性、可用性和可问责性的风险,因为它们是企业资源的网关。并且,企业应该尽可能地避免没有开放的丰富文档的API。如果加密密钥被用作调用API的访问和身份验证机制,它们必须根据政策安全地存储,永远不要硬编码到配置文件或其他脚本。
API的问题不太可能会很快消失;并且API正在成为现代开放企业的基石。鉴于其重要性,API应该得到创建和使用API的人的更多重视。如果安全地部署,API可以让企业充分利用其自己和其他人的数据,同时确保便利性和安全性。如果部署不当,API可能被攻击者利用来攻击企业及其用户。
应用编程接口(API)一直是信息安全领域的热门讨论话题,这是有原因的:最近的一些高知名度网站安全泄露事故(包括Pinterest和Instagram)都涉及API。
在2014年1月,Snapchat数据泄露事故导致约460万用户受影响,而该事故的根源就是不安全的API。虽然API并不是直接攻击目标,但API允许攻击者大规模匹配Snapchat用户的手机号码与用户名。
在本文中,我们将探讨不安全的API如何以及为何会给企业及用户构成重大风险,并解释安全团队应该怎样做来提高人们的安全意识、保护现有企业软件中的API,以及如何安全地使用API数据。
什么是API?
API是指一组函数或例程,它们用于完成特定任务或提供简单方法来与软件组件进行交互,通常允许自动化常见流程,例如与在其他机器上运行的服务器进行交互。
API可以是一个库,其中包括例程、数据结构、对象类和变量的规格,或者只是暴露给API使用者的远程调用的规格。一些API是基于国际标准(例如可移植操作系统接口,POSIX),而另一些则是以开源或供应商文档形式公之于众。例如,微软的Windows API让开发人员能够为Windows平台创建软件。
为了产生潜在收人来源和商业机会,企业正在越来越多地通过API来交付其业务应用程序和数据。此外,Web 2.0也推动了Web API使用量的激增,让用户与程序可以与在线应用程序背后的核心数据进行交互。亚马逊云计算服务就是最好的例子,它使用API来让用户访问其各种服务,例如EC2。
通过公开化API,企业可以提高合作伙伴连接性和云集成,并能够更好地向客户提供服务。同时,第三方也可以开发应用程序,为用户提供额外的功能,并帮助提高企业服务和产品的知名度和部署率。
根据Layer 7 Technologies公司的最新研究显示,超过43%的受访者称其企业目前已经部署了API计划,而27%表示,在未来一年内将会推出这样的计划。Facebook平台就是API取得成功的一个很好的例子;Facebook提供的API让开发人员创建数百应用程序和服务,访问Facebook及其用户的数据,这无疑显著推动了Facebook的发展和成功。
Web API(例如来自Facebook的API)通常是超文本传输协议请求消息,返回结构化响应消息,最常见的是可扩展标记语言或JavaScript对象符号格式。这种API快速取代了基于简单对象访问协议的Web服务和面向服务的架构;因为它们更容易部署,并且更适合创建一个开放架构,以在应用程序和用户之间共享内容和数据。
API安全问题以及如何避免它们
除了诸多优点外,应用编程接口也存在安全问题,正如最近的安全泄露事故所显示的。安全问题通常不在于API背后的概念,而在于它的编码方式。很多应用开发人员在编写或使用API时没有考虑安全因素,使得应用和数据处于危险之中。当涉及API时,糟糕编写的代码很快就会变成危险代码。
所幸的是,企业及其开发人员可以采取一些措施来加强和确保API在企业环境的安全性。
在开发过程(当然是在发布应用之前)中,安全专家应该手动检查API代码,以测试它是否可能被攻击者滥用或误用。文档记录也很关键,清楚记录的代码让安全人员可以看到API应该以及不应该做什么,并让整合API到应用的人了解如何正确部署API。
在文档中,开发人员应该明确如何调用API、哪些数据将被返回以及以何种格式,还有可能出现什么错误消息。内部记录还应该指明谁可以访问API以及哪些信息将被记录以确定哪些资源出于审计目的被谁在何时访问。在访问的话题上,在适当的时候,机器ID应补充身份验证检查。并且,还应该检查每个API调用以确保用户或设备有正确的权限来查看、编辑或删除所需信息。然而,在用户身份验证后,很多开发人员通常省去了二次访问控制检查。
对于检查API如何处理突发性输入和请求,黑盒测试和模糊测试是关键。同样重要的是,通过数据验证例程来防止标准注入漏洞和跨站请求伪造攻击,因为调用API可能来自不受信任的来源。此外,应该在所有类型的端点进行测试,而不只是对web浏览器。通过非浏览器应用(例如移动应用)访问时,很多API未能部署SSL,所以一定要确保数据始终是加密状态--当没有要求纯文本格式时。渗透测试和漏洞评估也应该侧重于API,因为它们是应用的接入点。
试图利用第三方的API的企业必须确保其开发人员完全了解如何安全地部署它们,并验证所有来自这些API的响应。很多开发人员(无论是来自第三方还是内部开发人员)喜欢重复使用互联网发现的代码,特别是涉及如何调用特定API时。然而,复制和粘贴代码,而不检查它是否适合于特定内容,这是API相关漏洞进入应用的常见情况。
企业必须记住:虽然开发速度可能很重要,但对细节的注意也很重要。开发人员必须仔细阅读API文档,永远不要依赖于互联网上的道听途说。企业的开发时间表应该给开发人员足够的时间来了解如何正确地部署API,以及了解API可能带来的潜在风险—特别是当涉及共享用户数据时。糟糕编写或部署的API可能引入攻击向量,并增加了与机密性、完整性、可用性和可问责性的风险,因为它们是企业资源的网关。并且,企业应该尽可能地避免没有开放的丰富文档的API。如果加密密钥被用作调用API的访问和身份验证机制,它们必须根据政策安全地存储,永远不要硬编码到配置文件或其他脚本。
API的问题不太可能会很快消失;并且API正在成为现代开放企业的基石。鉴于其重要性,API应该得到创建和使用API的人的更多重视。如果安全地部署,API可以让企业充分利用其自己和其他人的数据,同时确保便利性和安全性。如果部署不当,API可能被攻击者利用来攻击企业及其用户。
赞赏
看原图
赞赏
雪币:
留言: