关于漏洞:OWASP-Top-10漏洞解析1-A1Broken-Access-Control-访问控制失效
作者: gentle_zhou 原文链接:https://bbs.huaweicloud.com/blogs/400993 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位回升到了以后第一位。 毁坏访问控制指的是拜访控制策略没有被正确的执行,导致用户能够在他们的预期权限之外进行操作。这种缺点通常会导致未受权的信息被泄露,批改,销毁,或者让用户执行了超出其权限限度的业务性能。 常见的访问控制生效类型常见的访问控制生效类型包含: 违反最小权限准则或默认回绝准则,即拜访只应该被授予限定的能力、角色或用户,但却对任何人凋谢。权限晋升,即用户应用了超过其原先身份的权限,比方在未登录时拿取到了用户权限,或在以用户身份登录时拿取到了管理员权限。通过参数篡改或强制浏览来批改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。 参考链接[https://owasp.org/Top10/A01_2021-Broken_Access_Control/]()体验华为云CodeArts Check 代码查看服务:https://www.huaweicloud.com/product/codecheck.html