请选择 进入手机版 | 继续访问电脑版

设为首页 收藏本站
思科社区 关注
思科社区

搜索
热搜: 邮件服务器
查看: 506|回复: 2

【原创翻译】REST API面临的七大威胁

[复制链接]
发表于 2020-6-7 21:33:27 | 显示全部楼层 |阅读模式

引言:查看当今IT世界中的前7REST API安全威胁,以了解安全威胁。

互联网安全是一个经常被技术博客和论坛讨论的主题,并且有正当理由:近年来众多高调的安全漏洞已经大量增长。 安全性非常重要,尤其是在REST API领域。

API安全性是组织希望在未来几年内解决的最大挑战,解决安全挑战有望成为API世界增长的催化剂。

根据Jitterbit2018API综合报告:

API正在改变业务

64%的组织目前正在创建API,用于内部或外部用例。 虽然四分之一的受访者目前根本没有创建API,但40%的受访者在内部和外部使用案例中都在利用API

API创建和管理正在落后于开发人员

创建和管理REST API 如今,利用API的大多数组织都依赖于他们的开发人员来编写和管理这些API。 虽然33%的受访者使用专用技术来管理他们的API,但9​​0%的受访者依靠他们的开发团队或外部资源来从头开始编写API

由于越来越多的新云应用程序之间存在编码集成 ,组织对其开发人员提出了额外的要求, 即为业务创建和管理API

REST API的安全性

在设计,测试和部署REST API时,安全问题必须是考虑的重要方面。 随着REST API的令人兴奋的发展,大多数时候,API的设计和开发中都低估了安全级别。 敏感数据的安全性,无论是组织信息还是个人信息,都是困扰开发人员的重要因素。 REST API也不例外,它是需要防范安全威胁和破坏的基本系统的一部分。

根据2018Postman社区报告 (调查)(https://translate.googleusercontent.com/translate_c?depth=1&hl=en&rurl=translate.google.com&sl=en&sp=nmt4&tl=zh-CN&u=https://www.getpostman.com/infographics/postman-community-survey-2018.pdf&xid=17259,15700023,15700124,15700186,15700190,15700201,15700237,15700242,15700248&usg=ALkJrhjZdV3VchHumdSqb1Ql1xtL1SbWUA),越来越多的开发人员关注REST API安全性并且比前一年更有信心:

在本文中,我将介绍当今IT世界中的前7REST API安全威胁,以吸引所有人的注意力并帮助您了解能够反映REST API性能的安全威胁。

REST的安全问题。

REST通常使用HTTP作为其底层协议,这带来了一系列常见的安全问题:

    潜在的攻击者可以完全控制HTTP请求或HTTP响应的每一位。 由于REST API通常用于交换保存并可能在许多服务器中执行的信息,因此可能会导致许多看不见的漏洞和信息泄露。

    攻击者可能是客户端(REST API的使用者,受害者是REST API服务器)或服务器端(攻击者控制了您的REST API服务器),他在那里创建了一个流氓恶意应用程序。 在这种情况下,受害者是使用远程REST API服务中的资源的应用程序。

    对于使用REST作为客户端或服务器的应用程序,另一方通常可以完全控制资源表示,并且可以将任何有效负载注入攻击资源处理(例如,获取任意Java代码或系统命令执行)。

REST架构中,端到端处理意味着一系列潜在的易受攻击的操作:

    在从/HTTP消息和资源URL(控制器映射)的映射期间。

    当实例化表示目标资源的对象并调用所请求的操作时(从控制器调用服务)。

    为目标资源(服务特定功能)生成状态表示时。

    访问/修改托管资源状态的后端系统中的数据时(保存到数据库或存储中)。

REST框架中的分层转换序列意味着链中的单个弱链接可能使您的应用程序易受攻击。

排名前7REST API安全威胁

1.注射攻击

在注入攻击中,危险代码嵌入到不安全的软件程序中以进行攻击,最明显的是SQL注入和跨站点脚本。 事实上,这种暴露可以通过将不受信任的数据作为查询或命令的一部分传输到API中来进行操作。 随后由解释器实施输入,这可能导致攻击者获得对信息的未授权访问或执行其他损害。

停止或拒绝注入攻击的最有效方法是添加输入验证,这是最重要的指导原则:

    验证输入:长度/范围/格式和类型

    通过在API参数中使用数字,布尔值,日期,时间或固定数据范围等强类型来实现隐式输入参数验证

    使用正则表达式限制字符串输入

    定义适当的请求大小限制并拒绝超过HTTP响应状态的请求413请求实体太大

2. DoS攻击

在拒绝服务(DoS)攻击中,攻击者在大多数情况下推送大量消息,请求服务器或网络建立由无效返回地址组成的请求。 如果不采用适当的安全预防措施,攻击能够使RESTful API进入非功能状态。 最近,无论您的API是否暴露,其他人(包括攻击者)都可以访问它。

随着这些API DoS攻击变得越来越普遍,并且随着组织越来越依赖API来满足其业务需求,安全专业人员应主动计划应对此类攻击。 即使禁用了用于应用程序身份验证的API密钥(或访问令牌),也可以通过标准浏览器请求轻松地重新获取密钥。 因此,使当前访问令牌无效不是长期解决方案。 如果DoS攻击被追溯到特定的IP地址,那么将该IP地址列入黑名单也不是长期解决方案,因为攻击者可以轻松获得新的IP地址。

这就是为什么需要多种访问控制方法的原因。 对于非敏感信息,使用API​​密钥可能就足够了。 但是,为了更好地防止DoS攻击,必须使用HTTPS和更强大的身份验证机制,包括OAuth,相互(双向)TLS(传输层安全性)身份验证或SAML(安全断言标记语言)令牌。

为防止大量可能导致DDoS攻击或其他API服务滥用的API请求,请对每个API的给定时间间隔内的请求数量应用限制(也称为尖峰阻止)。 超过速率时,至少暂时阻止从API密钥访问,并返回429(请求太多)HTTP错误代码。

如果您要开始构建新的REST API ,请检查具有许多面向安全功能的Web服务器。

3.认证失败

这些特定问题可能使攻击者绕过或控制由Web程序使用的身份验证方法。 遗漏或不充分的身份验证可能会导致攻击,从而可能危及JSON Web令牌,API密钥,密码等。 攻击的目的通常是掌控多个帐户,更不用说攻击者获得与受攻击用户相同的权限。 应该授予经过身份验证的用户访问API的权限。

使用OpenId / OAuth令牌,PKIAPI密钥可以很好地处理API授权和身份验证要求。 明智的做法是永远不要通过未绑定的连接发送凭据,也不要在Web URL中显示会话ID

4.敏感数据暴露

由于在传输过程中或在休息时缺乏加密而导致的敏感数据暴露可能会导致攻击。 只要应用程序无法正确保护敏感数据,就会发生敏感数据暴露。 这些信息可能不同于私人健康信息,信用卡信息,会话代币,密码等等,往往更容易受到攻击。 敏感数据需要高安全性,包括静态或传输时的加密,以及与浏览器交换时的特殊安全做法。

为避免暴露敏感数据,您必须使用SSL

今天,您可以通过Let's Encrypt获得免费证书。 SSLTLS在消除基本API漏洞方面花了很长时间。

要获得有关实施效果的出色报告,请针对Qualys SSL服务器测试运行URL。 这是我们的:

5.访问控制中断

访问控制(在某些情况下称为授权)是Web软件如何允许某些人而不是每个人访问功能和内容。 访问控制丢失或不足可以允许攻击者获得对其他用户帐户的控制权,更改访问权限,更改数据等。

当导致访问漏洞的开发人员未正确配置操作级别可访问性时,公司应用程序访问会受到攻击。 拒绝访问是破坏访问控制的最着名的后果,访问控制的利用是攻击者的主要工艺。

可以使用手动方式检测访问控制,甚至可以通过自动化来检测某些框架中缺少访问控制。 如果在可靠的无服务器端或服务器端API中实现,访问控制通常是高效的,从而攻击者将无法更改访问控制元数据。

6.参数篡改

这是一种攻击,它基于客户端和服务器之间交换的参数的操纵,以便修改应用程序数据,例如用户凭据和权限,产品的价格和数量等。通常,此信息存储在cookie中,隐藏的表单字段或URL查询字符串,用于增加应用程序功能和控制。

当有害的网站,程序,即时消息,博客或电子邮件使用户的互联网浏览器在授权站点上执行不必要的操作时,就会发生这种情况。 它允许攻击者使目标系统使用目标的Web浏览器执行功能,在不知不觉中对受攻击的用户执行,可能直到未执行授权的事务为止。

攻击成功取决于完整性和逻辑验证机制错误,其利用可能导致其他后果,包括XSSSQL注入,文件包含和路径泄露攻击。

您应仔细验证收到的URL参数,以确保数据代表用户的有效请求。 无效请求可用于直接攻击API或定位API背后的应用程序和系统。 将验证器放在应用程序上,并尝试对发送到REST API的请求使用API​​签名。 为API 创建自动安全性测试也是一件好事,以便查看没有参数篡改会影响您的REST API

7.中间人攻击(MITM

当攻击者秘密地改变,拦截或转发两个交互系统之间的通信并拦截它们之间传递的私人和机密数据时。 MITM攻击分两个阶段发生:拦截和解密。

HTTP和缺乏TLS

API中缺少传输层安全性(TLS)实际上等同于向黑客发出公开邀请。 传输层加密是安全API中最基本的“必备”之一。 除非使用TLS,否则相当常见的“中间人”攻击的风险仍然非常高。 在API中同时使用SSLTLS,尤其是在您公开使用API​​时。

总结

在开发REST API时,您必须从一开始就注意安全性。 考虑使用内置了许多安全功能的现有API框架。在RestCase中,我们使用SugoiJS API Framework ,我们也为其代码库以及测试和安全指导做出贡献。 通过这种方式,可以统一构建安全性,开发人员可以专注于应用程序逻辑。

毕竟,不要忽视分配资源来测试API的安全性。 请务必测试本文中提到的所有安全威胁。。

【原标题】Top 7 REST API Security Threats  (作者: Guy Levin)

原文链接: https://dzone.com/articles/top-7-rest-api-security-threats


  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 2020-6-8 15:22:58 | 显示全部楼层
感谢版主分享,谢谢~
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 2020-7-5 12:17:59 | 显示全部楼层
威胁很多。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
您需要登录后才可以回帖 思科 CCO 登录 | 思科 CCO 注册   

本版积分规则

Archiver | 思科社区  

GMT+8, 2020-7-13 03:15 , Processed in 0.090914 second(s), 35 queries .

京ICP备11014401号-17

© 2020 思科系统.版权所有 重要声明 | 保密声明 | 隐私权政策 | 商标 |

快速回复 返回顶部 返回列表