OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效

作者: gentle_zhou

原文链接:OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效-云社区-华为云


Web应用程序安全一直是一个重要的话题,它不但关系到网络用户的隐私,财产,而且关系着用户对程序的新人。随着Web应用程序功能持续增加,复杂性不断提高,这些程序也面临着越来越多的安全威胁和挑战。

为了帮助这些应用程序的开发团队和安全人员了解和防范这些威胁,提高安全意识,编写更安全的代码,OWASP(Open Web Application Security Project,开放式Web应用程序安全项目)发布了一份标准指南,称为OWASP Top 10。

这是一份关于Web应用程序安全风险的标准指南,它基于全球范围内的安全专家和数据提供者的共识,列出了当前最严重、最关键的10种Web应用程序安全风险,并提供了相应的防范措施和建议。OWASP Top10 每隔几年会更新一次(目前已经发布了六个版本,分别是2004年、2007年、2010年、2013年、2017年和2021年),最新的版本是在2021年发布的OWASP Top10:2021。

今天,就来为大家讲解其中的第一条缺陷:Broken Access Control访问控制失效,它从2017年版本的第5位上升到了当前第一位。

image.png

破坏访问控制指的是访问控制策略没有被正确的执行,导致用户可以在他们的预期权限之外进行操作。这种缺陷通常会导致未授权的信息被泄露,修改,销毁,或者让用户执行了超出其权限限制的业务功能。

常见的访问控制失效类型

常见的访问控制失效类型包括:

  • 违反最小权限原则或默认拒绝原则,即访问只应该被授予限定的能力、角色或用户,但却对任何人开放。
  • 权限提升,即用户使用了超过其原先身份的权限,比如在未登录时拿取到了用户权限,或在以用户身份登录时拿取到了管理员权限。
  • 通过参数篡改或强制浏览来修改URL、应用状态、HTML页面,或则使用攻击工具修改API请求,以此绕过访问控制检查。
  • 修改唯一标识符(不安全的直接对象引用),即通过修改应用程序中用户可控的值(如参数)来访问对象,但程序没有进行适当的授权检查,导致其可以去查看或编辑其他人的账户。
  • 元数据操作,例如重放或篡改JSON Web Token(JWT)来访问控制令牌,或则通过修改cookie、隐藏字段来提升权限。
  • CORS配置错误,即跨域资源共享(CORS)的机制没有正确设置,导致浏览器无法访问不同源的资源,导致访问控制检查被绕过,造成服务器信息泄露或数据篡改。
  • API未设置访问控制。

如何防止该缺陷的发生

访问控制仅仅在可信的服务器端代码或则API中生效,因为这可以防止攻击者修改访问控制检查或元数据。同时,需要做到如下几点:

  • 除了公共资源意外,其余访问默认都拒绝
  • 实现一次访问控制机制,并在整个应用程序中重复使用它们,包括尽量减少跨域资源共享(CORS)的使用。
  • 模型访问控制应该强制记录用户的所有权,而不是接受任意用户可以创建、读取、更新或删除任何记录。
  • 一些特殊应用程序业务的限制需求应该由域模型(domain model)强制执行。
  • 禁用web服务器目录列表,并确保文件元数据(例如.git)和备份文件不在web根目录中。
  • 记录访问控制失败的发生,在适当的时候提醒管理员(例如,重复失败X次)。
  • 对API和控制器访问进行速率限制,以最小化自动化攻击工具造成的危害。
  • 用户注销后,有状态会话标识符应该在服务器上失效。无状态JWT令牌应该是短暂的,这样攻击者的机会窗口就会被最小化。对于寿命较长的jwt,强烈建议遵循OAuth标准来撤销访问。

开发人员和安全质量相关人员在日常,应该养成针对访问控制功能模块进行集成测试的习惯。

举个栗子

应用程序在访问账号信息的SQL语句中使用了未被验证的数据:

 pstmt.setString(1, request.getParameter("acct"));ResultSet results = pstmt.executeQuery( );

那么攻击者就可以去修改这个参数信息"acct”为任何他们想要的信息,配上任何他们希望了解的账号。如果程序对这信息没有好好验证,那么攻击者就可以借此去了解任何一位用户的账号信息,比如https://example.com/app/accountInfo?acct=notmyacct

参考链接

  1. https://owasp.org/Top10/A01_2021-Broken_Access_Control/

体验华为云CodeArts Check 代码检查服务:代码检查CodeArts Check_精准定位_代码缺陷_安全检查_华为云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142601.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

解决电脑桌面软件图标变白的问题

文章目录 前言一、软件图标变白的原因二、解决方法1、显示隐藏项目2、清除图标缓存 前言 桌面软件太多了,导致有些杂乱,换了个显示器后,想着将桌面的软件分类,将其放到不同的目录下,结果有些软件放入文件夹后图标变成…

手把手教你实现:将后端SpringBoot项目部署到华为云服务器上

前言 前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(localhost) 如果没有可以看这篇:一个基于SpringBoot的后端项目 注册华为云账号 华为云官网 购买云服务器 产品 -> 华为云耀云服务器…

基于微信小程序的民宿短租酒店预订系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

8款常见的自动化测试开源框架

在如今开源的时代,我们就不要再闭门造车了,热烈的拥抱开源吧!本文针对性能测试、Web UI 测试、API 测试、数据库测试、接口测试、单元测试等方面,为大家整理了github或码云上优秀的自动化测试开源项目,希望能给大家带来…

CentOS下安装MySQL 8.1及备份配置

1 卸载原来的MySQL版本 移除之前部署的mysql软链接 # unlink /etc/init.d/mysql # unlink /usr/bin/mysql2 下载最新的MySQL版本 https://dev.mysql.com/downloads/mysql/8.0.html 我这里直接把地址放在这里:https://cdn.mysql.com//Downloads/MySQL-8.1/mysql…

IP地址最终弹,DNS,数据链路层,特殊地址

目录 一、特殊地址 二、数据链路层 三、DNS 一、特殊地址 将IP地址中的主机IP全部设置为0,就成了网络号,代表这个局域网(不可给具体的设备分配这个IP) 将IP地址中的主机IP全部设置为1,就成了广播地址,给同…

初识网络原理

网络发展史 独立模式 计算机之间相互独立 网络互联模式 将多台计算机连接在一起,完成数据共享。 数据共享本质上是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。 根据网络互连的规模不同,可以划分为局域网和广域网。 …

14:00面试,14:06就出来了,这问的谁顶得住啊

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,…

JDK21新特性 有序集合

有序集合 描述常用有序集合体系LinkedHashMapLinkedHashSetLinkedBlockingDequeArrayDeque 三级目录 描述 Java集合体系中,原来就有有序集合实现,但是没有规范支持有序操作的接口。 JDK21 新增了两个接口 SequencedCollection,SequencedMa…

一文了解亚马逊云科技适用于 Amazon Lightsail 的托管数据库

Amazon Lightsail 是亚马逊云科技提供的一种易上手使用、月度价格经济实惠,并包括了计算实例、容器、存储、数据库的虚拟专用服务器。在创建时可以进行业务蓝图选择,可选择包含多种操作系统(Linux/Windows 等)或操作系统加上典型应…

JS进阶-函数剩余参数

函数参数的使用细节&#xff0c;能够提升函数应用的灵活度。 动态参数 arguments是函数内部内置的伪数组变量&#xff0c;它包含了调用函数时传入的所有实参&#xff0c;只存在于函数里 function getSum() {let sum 0for (let i 0; i < arguments.length; i) {sum arg…

从0开始写中国象棋-创建棋盘与棋子

从控制台版本开始 考虑到象棋程序&#xff0c;其实就是数据结构与算法实现。 所以和界面相关的QT部分我们先放一放。 我们从控制台版本开始。这样大家更容易接受&#xff0c;也不影响开发。 后面我们会把控制台嫁接到QT上完成完整的游戏&#xff0c;那时候自然就水到渠成了…

软件测试:全链路追踪工具 Zipkin导入、安装(Windows版本)

1.0全链路追踪技术出现的原因 公司内部一个功能的实现&#xff0c;底层可能调用多个应用系统 在调用这个功能的同时&#xff0c;可能会出现多种情况&#xff0c;比如访问较慢&#xff0c;出现错误&#xff0c;可能需要进行定位 所以&#xff0c;我们需要快速定位服务错误点 大…

Spring整合RabbitMQ——消费者

1.配置consumer xml配置文件 2. 实现MessageListener接口 并重写onMessage方法

想要精通算法和SQL的成长之路 - 最长递增子序列 II(线段树的运用)

想要精通算法和SQL的成长之路 - 最长递增子序列 II&#xff08;线段树的运用&#xff09; 前言一. 最长递增子序列 II1.1 向下递推1.2 向上递推1.3 更新操作1.4 查询操作1.5 完整代码&#xff1a; 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 最长递增子序列 II 原题链接…

《学术小白学习之路11》DTM主题动态模型原理与基础构建

《学术小白学习之路》DTM主题动态模型构建 一、LDA与DTM的区别二、代码实操2.1 数据2.2 获取数据向量2.3 参数设置与模型构建2.4 结果的输出一、LDA与DTM的区别 LDA主题模型主要针对一段段的文档 可以得出每个主题,所对应主题词的词语的概率 该模型的主题概率的生成是基于文…

ASN1编码查看工具

ASN1编码查看工具 多页面ASN1编码查看工具&#xff0c;支持DER和base64编码&#xff0c;支持数据高亮 多页面ASN1编码查看工具&#xff0c;支持DER和base64编码&#xff0c;支持数据高亮

如何将本地的项目上传到Git

一、GitHub or GitLab or Gitee创建一个新的仓库 二、仓库路径创建成功后&#xff0c;将本地项目上传到git 1. 进入本地项目所在文件夹位置&#xff0c;右击 2.出现git命令框 输入git init 在当前项目的目录中生成本地的git管理&#xff08;会发现在当前目录下多了一个.git文件…

【C++】笔试训练(一)

目录 一、选择题二、编程1、组队竞赛2、删除公共字符 一、选择题 1、以下for循环的执行次数是&#xff08;&#xff09; for (int x 0, y 0; (y 123) && (x < 4); x);A 是无限循环 B 循环次数不定 C 4次 D 3次 答案&#xff1a;C 2、以下程序的运行结果是&…

【神印王座】悲啸洞穴之物揭晓,圣采儿差点被骗,幸好龙皓晨聪明

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析神印王座。 神印王座动漫现阶段已经出到龙皓晨等人接取新任务深入魔族地界的阶段&#xff0c;而龙皓晨等人接取的任务想必现在大家都知道了&#xff0c;那就是探索魔族地界中的悲啸洞穴。但是大家知道悲啸洞穴里面藏着什么…