上一篇:再见!LayUI !

文章来源:嘶吼专业版

最近一连串的 API 安全事件(Peloton、Experian、Clubhouse 等)无疑迫使许多安全和开发团队仔细检查他们的 API 安全状况,以确保它们不会成为下一个被攻击对象。创建面向外部受众的所有API的清单是组织在组合或重新评估API安全程序时最常见的出发点。有了这个清单,下一步是评估每个暴露的 API 的潜在安全风险,比如弱身份验证或以明文形式暴露敏感数据。

OWASP API安全Top 10为评估API清单的风险类型提供了一个良好的框架。它们被列在前10位是有原因的,最常见和最严重的都排在前面。例如,列表中的前两个处理身份验证和授权,这两个都可以追溯到上面提到的一些最近的API事件,这在安全公司的客户环境中很常见。

未经身份验证的 API

未经身份验证的 API 是迄今为止在面向公众的 API 中检测到的最糟糕的事情,对于处理基本业务信息的 API 尤其如此,这些信息可能包含遵守PCI或PHI法规的信息。

在处理必要业务数据的面向公众的 API 中缺乏身份验证的一个常见原因是,该 API 过去故意不进行身份验证,以支持不支持身份验证的遗留应用程序。以前可能是这样,但这并不意味着API应该保持开放。今天,许多用户(包括外部和内部)将完全开放地访问API。了解旧限制历史的人可能已经离开了公司,因此,企业现在需要努力填补这一差距。为这些例外情况打开大门是绝对不能接受的,因为很少有人在以后的某个时间点再回去关闭大门。

最佳实践:永远不要部署未经验证的API,无论是内部的还是面向公众的。

使用非空值身份验证令牌的 API

尽管很难想象,但通常会发现 API 根本不使用 auth 令牌实现任何身份验证,而是仅检查请求中是否存在一个。这个问题通常比 API 中缺少身份验证更令人震惊,因为这允许用户仅通过在 API 请求中传递身份验证令牌来访问资源。令牌的实际值并不重要,因为应用程序仅检查请求中是否存在身份验证令牌(任何身份验证令牌)。

很难想到用这种方法开发 API 的充分理由。也许他们缺乏在后端应用程序中实现身份验证逻辑所需的时间?不幸的是,攻击者无需花费太多精力或时间即可利用这些 API。他们只需要为 auth 令牌发送一个非空值,API 请求就会被成功处理。绝不应允许使用非空值令牌。曾经。它带来了“暂时”使用但永远不会被删除的重大风险。

最佳实践:始终为内部或面向公众的 API 分配令牌值。

API经过身份验证,但未经授权

只有身份验证而没有授权的 API 是另一个常见的漏洞。部分原因是实现用户身份验证“足够好”的概念,通过验证用户的授权权限几乎没有什么好处。缺点是这允许用户访问不属于他们的资源。

例如,假设一个用户登录来检查他们的配置文件,而后端没有强制执行强授权检查。通过更改用户标识符,用户将能够“嗅探”并通过相同的API获取信息。在这种非常常见的API风险中,通过身份验证的用户可以通过简单地枚举标识符来获取许多其他用户的信息。

如果标识符是简单的数值,例如攻击者可以轻松枚举的 6 位数字,则此问题会变得更糟。最基本的建议是使用随机生成的字母-数字标识符,至少可以缓解(但不能消除)此类枚举攻击的风险。

最佳实践:始终实施强授权机制来补充强身份验证。

API令牌扩散

应用程序开发团队通常支持不同类型的身份验证集成与其 API 的不同使用者。这最终导致 API 的身份验证方法分散,应用程序所有者难以管理。

例如,消费者 A 可能会在请求标头中发送一个名为 X-api-token 的 API 令牌,以向应用程序验证自己的身份。相反,拥有相同API的消费者B可能会以一个名为API -key的请求参数发送他们的API令牌,第三个消费者C可能会在Authorization头中发送他们的信息。

这种不同的方法导致 API 以多种方式接受身份验证令牌,这些方法中的任何一个潜在漏洞,类似于我们上面看到的那些,都可能危及所有这些方法的访问。我们的建议是强制API定义(如Swagger规范)的一致性,然后在发布之前对结果进行测试以缓解风险。至少,在运行时发现API 并检测它们中是否存在这样的碎片验证问题是很重要的。

最佳实践:使用 API 规范框架强制执行一致性,并使用基于功能的测试计划超越基本的渗透测试。

带有不正确授权逻辑的API

具有不正确授权逻辑的 API 允许通过接受在低权限环境(例如 dev 或 staging)中生成的身份验证令牌来访问高权限环境,例如生产环境。如果用户可以轻松访问生产环境中的敏感业务数据,这可能会迅速升级为一个重大漏洞。

精明的攻击者可能能够从较低的环境中获取身份验证令牌并将其重播到生产服务器。身份验证的糟糕实现将允许此类访问,因为身份验证令牌本身可能是有效的,但适用于错误的环境。为了修复这种风险,需要将 auth 令牌的授权范围适当限制在允许访问的资源范围内。

最佳实践:使用 OAuth Scopes 或其他工具来创建和实施设计良好的授权后端。

总结

API 身份验证令牌实际上是你的应用程序中的关键。这 5 个身份验证漏洞都在客户环境中发现,使他们的 API 容易受到攻击者入侵他们的应用程序并泄露他们无权访问的信息的攻击。

创建清单并分析面向公众的 API 以在攻击者发布或发现它们之前找到身份验证漏洞非常重要。

参考及来源:https://securityboulevard.com/2021/07/api-security-need-to-know-top-5-authentication-pitfalls/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+SecurityBloggersNetwork+%28Security+Bloggers+Network%29

感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。

· END ·

最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。

正文结束

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.IntelliJ IDEA 2019.3 首个最新访问版本发布,新特性抢先看

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

一个人学习、工作很迷茫?

点击「阅读原文」加入我们的小圈子!

API 的5 大身份验证安全隐患相关推荐

  1. eap aka_使用API​​密钥(aka身份验证令牌)部署到Maven Central

    eap aka 如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有 ...

  2. java实现iam登录认证_是否可以通过Cloudfront对API网关进行IAM身份验证?

    是否可以通过Cloudfront将IAM角色身份验证用于API网关 endpoints ? 这是一个基本用例: / api - > API网关 / * - > S3 HTML / Java ...

  3. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证

    背景 最近,自己在技术精进方向上有所犹豫,是往"网络渗透"的方向走呢?还是往"量化交易"的方向走? 如果选择精进"网络渗透",就需要学习各种 ...

  4. 使用API​​密钥(aka身份验证令牌)部署到Maven Central

    如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有提供任何机制来本 ...

  5. zap安装提示java_使用API调用进行ZAP身份验证

    我正在使用ZAP API调用来使用命令行测试站点 . 但即使我遵循正确的步骤,我的用户身份验证也有问题 . 但是当蜘蛛作为用户时,我仍然无法设法通过登录页面 . 以下是我要介绍的步骤 . 1.包含在上 ...

  6. 7. Spring Boot2.5 安全机制与 REST API 身份验证实战

    文章目录 Spring Boot2.5 安全机制与 RESTAPI 身份验证实战 一.Java Spring Boot 2.5 安全机制 Java Spring Boot 2.0 安全机制 安全漏洞 ...

  7. 使用基本身份验证来保护Spring Boot REST API

    这是我的Spring Boot Blog帖子系列的第三篇文章. 在第一篇文章中,我谈到了我使用Spring Boot创建RESTFul Services的经验. 然后我将样本扩展到 与Swagger文 ...

  8. 如何进行安全可靠的API身份验证?

    前言: 在开发安全的 REST API 时,身份验证是必不可少的.你可以将你的应用程序想象成一个聚会,那么身份验证就像一扇门,决定哪些客人可以进入--或者更准确地说,哪些请求可以进出. 接下来我将介绍 ...

  9. java 令牌_WEB API - 使用Bearer令牌进行身份验证

    我创建了一个允许外部认证/注册的MVC应用程序 . 它创建了所有必要的组件(Owin,EF,Regiter,Login,Logout),我能够在应用程序中执行所有基本活动 . 现在,我想将Web应用程 ...

  10. api身份验证_api上下文中的身份验证

    api身份验证 APIs are becoming a main interface for interacting with many things, from enterprise service ...

最新文章

  1. Redis初学16:主从复制
  2. 详解synchronized锁的各种用法及注意事项
  3. 一张图,看清人体触碰禁区
  4. python使用阿里云sdk
  5. Web-Lesson07-JS的函数及作用域
  6. centos6.2下安装samba服务器
  7. 导出excel数字前面的0消失_Excel操作中常见的3大坑你遇到过吗?遇到应该这么解决...
  8. 你知道“借鸡生蛋”吗?学会这个方法,没钱没人脉你也可以创业
  9. Eclipse调试Java的10个技巧
  10. clickhouse的kafka表引擎 +接口表
  11. python怎么使用-如何使用 Python 开始建立
  12. 服务器无限关机重启,服务器反复关机重启
  13. ios build lame
  14. fatfs 文件属性_FATFS文件系统剖析(全).
  15. [Factory mode] 怎么配置工厂模式测试项
  16. 一、最简单的爬虫(python3 爬虫小白系列文章)
  17. java 中抽象类的继承_java抽象类 继承
  18. 搜狗商业数据库自动化运维平台
  19. pro android python with sl4a,Pro Android Python with SL4A
  20. H5跳转微信公众号关注页面

热门文章

  1. 如何让Tuxera NTFS总是挂载不干净的卷?
  2. +搭建“记忆宫殿”的三款思维导图神器
  3. python - 多线程、装饰器
  4. PyInstaller打包成exe可执行文件
  5. MySQL主从复制-基于GTID及多线程的复制
  6. Ant + Jenkies +Tomcat 自动构建部署Web项目
  7. 如何在appconfig中配置服务的ip
  8. Atitit dsl exer v3 qb3 新特性
  9. iptables实战系列:通过NAT转发实现私网对外发布信息
  10. x5cloud云平台---------------网络彩讯