JAVA开发常见安全问题:纵向越权

专栏链接

一、数据的校验

  1. SQL注入
  2. 命令注入
  3. 跨站脚本
  4. 任意文件上传
  5. 任意文件下载
  6. 任意文件删除
  7. 任意文件读取与写入
  8. Iframe 框架钓鱼
  9. 负值支付漏洞

二、认证与授权

  1. 密码修改(无需原密码)
  2. 密码策略不足
  3. 用户名密码(敏感信息)明文传输
  4. 验证码可重复利用
  5. 缺少验证码功能
  6. 用户名枚举(用户名和密码单独验证)
  7. 登录尝试次数限制功能失效
  8. 登录后门

认证与授权:纵向越权

漏洞描述:

纵向越权指某个用户从低权限通过利用某种应用漏洞或手段,提升为拥有高级别的访问权限,如从普通角色升级为管理员角色。

检测方法:

检查 web.xml 中是否配置权限控制的全局过滤器以及其权限管理规则。

检查是否使用某些第三方框架进行权限控制。

不合规的代码示例:

java 复制代码
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
	HttpServletRequest req = (HttpServletRequest) request;
	HttpServletResponse res = (HttpServletResponse) response;
	String uri = req.getRequestURI();
	//卖家
	Object SESSION_COMPANY =req.getSession().getAttribute(Consts.SESSION_COMPANY);
	//买家
	Object SESSION_BUYER = req.getSession().getAttribute(Consts.SESSION_BUYER);
	//试点分公司
	Object SESSION_BRANCH =req.getSession().getAttribute(Consts.SESSION_BRANCH);
	log.info(req.getRemoteAddr() + "\tvisite\t" + uri);
	if (isNeedCheck(uri)) {
		if (SESSION_COMPANY == null && SESSION_BUYER ==
		null && SESSION_BRANCH==null) { 
			res.sendRedirect(req.getContextPath() +"/login.jsp");// 用户未登
		} else {
			chain.doFilter(request, response);
		}
	} else {
		chain.doFilter(request, response);
	}
}

不合规说明:

认证过滤器中只是判断用户有没有登录,并没有区分每种用户具有哪些 URL 的访问权限。

合规的代码示例:

java 复制代码
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
	// url 权限存放在缓存中 UrlPrivInfo
	HttpServletRequest req = (HttpServletRequest) arg0;
	HttpServletResponse res = (HttpServletResponse) arg1;
	String pathInfo = req.getPathInfo() == null ? "" : req.getPathInfo();
	String url = req.getServletPath() + pathInfo;
	Map map = new HashMap();
	if (PrivCacheManager.get(Constant.URLPRIVKEY) != null) { 
		map = (Map) PrivCacheManager.get(Constant.URLPRIVKEY);
	}

合规说明:

该 url权限控制过滤器,根据登录用户的不同,加载该用户所拥有的所有 URL,当用户访问某个 URL 的时候,过滤器会判断该用户是否拥有访问权限,防止纵向越权。

相关推荐
一定要AK4 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao4 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao4 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
科技小花4 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸4 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain4 小时前
linux个人心得22 (mysql)
数据库·mysql
迷藏4944 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
黎阳之光4 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
上海云盾-高防顾问4 小时前
网络安全防护发展趋势:从被动防御到主动赋能
安全·web安全
阿里小阿希5 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql