api(Application Programming Interface)应用程序接口,可以应用于所有计算机平台和操作系统,以不同的格式连接数据调用数据。比如,用户可以跟踪电商平台购买的货物位置,就是电商平台与物流公司之间使用了API位置实时调用产生的效果。
许多组织更关注于快速的API和应用程序交付,而忽视了API安全保护,这也是近几年来API攻击和数据泄露的主要原因。本文将从API常见类型、API攻击、API安全测试、API安全建设这几个角度做简单分享。
分类 | 描述 | 安全现状 |
公有型API | 支持任何人从任何地方访问服务,被暴露在互联网中 | 网络限制少,认证和授权可能存在,可能不存在 |
开放API | 频繁出现在金融业相关的开放银行倡议中,促进特定行业的创新和提高服务整合 | 认证和委托授权都是有的 |
私有型API | 通常在数据中心或私有云网络环境中部署和运行,以运营管理、内部服务支撑为主 | 认证和授权可能存在,但是也有可能认为攻击暴露面有限,而被忽视 |
合作伙伴API | 向特定的外部供应商提供对内部API的有限访问,以推动数字供应链 | 访问程度控制权位于内部和外部API之间,可能通过API网关管控,但缺少安全方面的考虑 |
说到API攻击不得不说,开放式Web应用程序安全项目(OWASP)的非营利组织,多年来应用安全十大排名在安全行业中经常被引用。
在2019年,OWASP发布了API Security Top 10,描述了十个最常见的API缺陷。
它作为培训和提高认识的辅助工具非常有用,也可以作为一个轻量级的分类标准,对API中的问题进行分类,下面将从用例和预防展开说明。
攻击者在 API 调用中将自己资源的ID替换为属于另一个用户的资源的 ID。缺乏适当的授权检查允许攻击者访问指定的资源。这种攻击也称为IDOR(InsecureDirect Object Reference) 。
用例:
预防:
较弱的API身份验证允许攻击者冒充其他用户的身份。
用例:
· 被视为“内部”的未受保护API· 弱密码、纯文本密码、弱哈希密码、共享密码或默认密码· 缺失验证码或没有账号锁定机制,攻击者可以对同一用户账号进行暴力破解· URL中包含令牌凭证和密码· 接受未签名或弱签名的JWT令牌(“alg”:“none”),或未校验令牌过期时间 。
预防:
· 检查所有可能的方式来对所有API进行身份验证· 使用标准身份验证、令牌生成、密码存储和多因素身份验证 (MFA)· 使用短期访问令牌· 验证您的应用程序(以便知道谁在与您交谈)· 对身份验证使用更严格的速率限制,并实施锁定策略和弱密码检查· 使用OWASP Authentication Cheat Sheet(身份验证备忘单)https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Authentication_Cheat_Sheet.md 。
API可能会暴露比客户端合法需要之外的更多数据 。
用例:
预防:
API无法防止过多的调用和载荷大小。攻击者会使用拒绝服务 (DoS),造成API无响应或不可用。
用例:
预防:
攻击者找出“隐藏”的管理API方法并直接调用它们 。
用例:
预防:
在API中容易利用批量分配,因为,它们通过设计公开了应用程序隐含的实现方法以及属 。
性名称。现代框架鼓励开发人员使用来自客户端的输入自动绑定到代码变量和内部对象中的功能。攻击者可以使用这种方法来更新或覆盖开发人员从未打算公开的敏感对象属性。
用例:
攻击者可以通过仔细阅读配套文档,来推测出对象的属性、查找到不同的 API 端点、或在请求负载中发掘额外的属性,进而对它们进行篡改。
· 与权限相关的属性:user.isadmin、 user.isvip仅应由管理员设置· 与流程相关的属性:user.cash仅应在付款验证后在内部设置· 内部属性:article.created_time仅应在应用程序内部设置 。
预防:
API 服务器的不良配置允许攻击者利用它们
用例:
预防:
攻击者通过任何可用的注入方法(如,直接输入、参数、集成服务等)向API提供恶意数据,并期望这些恶意数据被发送至解释器执行 。
用例:
预防:
攻击者通过发现API的非生产版本(例如,临时的、测试版或更早期的版本),他们没有如生产环境API那样受到良好保护,将通过这些渠道进行发起攻击。
用例:
预防:
缺乏适当的日志记录、监控和警报会导致攻击和攻击者被忽视。
用例:
预防:
中文详细参考链接:
http://www.owasp.org.cn/OWASP-CHINA/owasp-project/OWASPAPITop102019.pdf
在左移的API安全实践中,一个重点是确保构建管道的安全,需要企业将安全工具嵌入持续集成/持续交付(CD/CD)中,以及基于git的开发人员工作流程中。以下列出了两类安全测试工具。
用于分析原始代码的潜在弱点和漏洞,通常在代码被提交到版本控制或构建阶段时运行。
GitHub code scanning、Coverity Scan Static Analysis、reshift、Xanitizer、HCL AppScan CodeSweep
用来分析运行中的应用,以发现可利用的漏洞,通常在生产交付前启动,或在生产中持续使用。
开源软件:OWASP ZAP、StackHawk、Arachni、sec-helpers、OWASPPurpleteam 。
缺点:当然以上工具也有其弱点,比如SAST工具误报率会较高,涉及人工复核成本。DAST工具运行时间会较长,需提前预留时间,以免耽误发布。
需要承认的是扫描器工具并不能用来检测所有类型的问题,比如一些滥用的业务逻辑缺陷。
来源参考:
https://owasp.org/www-community/Free_for_Open_Source_Application_Security_Tools
(以上链接的中文翻译)
架构设计对于有效的保护API安全至关重要,架构中需要具备捕获和分析所有API流量的产品。
需要有丰富的数据引擎、基于API Security Top10威胁、算法识别等技术来检测暴露的分析,并进行有效的拦截,以及提供加固补救措施。
流程和人员设计同样重要,在发现、测试和保护API时,补救措施以及各内部角色和第三方组织的协同。
需要支持现代云架构和传统的基础设施架构。
由于API发开、API集成和第三方API依赖,使得API清单不断发展,必须有不断识别API端点和参数(不仅是IP和主机名,还需要功能、路径、信息主体),未知影子API,过期或者废弃的僵尸API。特别是敏感数据发现能力,比如个人身份信息,因为这块会涉及监管合规问题。持续检测数据权限、口令认证等缺陷,并能及时感知API的攻击存在。
能够与负载均衡、API网关、WAF、漏洞管理平台(VM)、DevOps套件、ITSM等平台集成。
在生产交付前扫描可能存在的缺陷,以减少攻击者发现可利用条件的可能。
API安全专业知识可能分散在开发、基础设施、运营、安全或者API产品团队中,需要去梳理,以便在发现、测试、保护和事件响应方面进行合作。
来源: 新钛云服
在 Native 开发中,Android 和 IOS 平台都在系统层面直接提供给了应用开发识别图像的一些能力,比如对于二维码/条形码的识别,Android 可以使用 barcode API 、 iOS 可以使用 CIQRCodeFeature API 。
Js的API设计原则总共包含了七个大块。系卤煮自己总结的一些经验和教训。本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来。很难做到详尽充实,如果有好的建议或者不对的地方,还望不吝赐教斧正。
现在越来越流行前后端分离开发,使用ajax交互。所以api接口文档就变的十分有意义了,目前市场有哪些比较优秀的接口文档管理工具呢?比如:MinDoc,eoLinker,apizza,RAML,Swagger等等
无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了。目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提供便利的同时,也成了呗恶意攻击的对象,那么如何才能防止被恶意调用呢?
整理提供最新的各种免费JSON接口,其中有部分需要用JSONP调用。方面前端同学的学习或在网站中的使用,包括:免费的天气预报、地图、IP、手机信息查询、翻译、新闻等api接口
要弄清楚什么是RESTful API,首先要弄清楚什么是REST。REST -- REpresentational State Transfer,英语的直译就是“表现层状态转移”。如果看这个概念,估计没几个人能明白是什么意思。
Fetch API 已经作为现代浏览器中异步网络请求的标准方法,其使用 Promise 作为基本构造要素。Fetch 在主流浏览器中都有很好的支持,除了IE。
随着移动互联网的发展, 基于互联网的应用正变得越来越普及,在这个过程中,更多的平台将自身的资源开放给开发者来调用。对外提供的API 调用使得平台之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值。
环境centos,添加deamon.json后,dockerd命令可以启动docker,这时请求 127.0.0.1:2375 可以正常访问,使用systemctl无法启动docker的情况.无法启动docker:查看当前的docker配置
你是否正在设计第一个Web应用程序?也许你过去已经建立了一些,但是目前也正在寻找语言的变化以提高你的技能,或尝试新的东西。有了所有信息,就很难决定为下一个产品或项目选择哪种编程语言。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!