T05 · Unauthorized Access and Privilege Escalation
- Location
references/java-templates.md:422- Finding
Generated CRUD Operations Do Not Enforce Tenant-Level Record Isolation
- Content
View full analysis
pageByQueryParam(XxxYyyQueryParam query, Pageable pageable) { IPage queryPage = PageUtil.toMybatisPage(pageable); IPage page = xxxYyyMapper.selectPage(queryPage, QueryHelpMybatisPlus.getPredicate(query)); return xxxYyyConverter.convertPage(page); } @Override public List listByQueryParam(XxxYyyQueryParam query) { return xxxYyyConverter.toDto(xxxYyyMapper.selectList(QueryHelpMybatisPlus.getPredicate(query, "id", false))); } @Override public long countByQueryParam(XxxYyyQueryParam query) { return xxxYyyMapper.selectCount(QueryHelpMybatisPlus.getPredicate(query)); } @Override // @Cacheable(key = "'id:' + #p0") public XxxYyyDTO getById(Long id) { return xxxYyyConverter.toDto(xxxYyyMapper.selectById(id)); } @Override // @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void insert(XxxYyyDTO res) { XxxYyy entity = xxxYyyConverter.toEntity(res); xxxYyyMapper.insert(entity); res.setId(entity.getId()); } @Override // @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void updateById(XxxYyyDTO res) { XxxYyy entity = xxxYyyConverter.toEntity(res); xxxYyyMapper.updateById(entity); } @Override // @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void removeByIds(Set ids) { xxxYyyMapper.deleteBatchIds(ids); } ``` ### Technical Analysis The skill generates CRUD service methods that operate on records without consistently applying an authenticated tenant or operator constraint. The template explicitly recognizes `operator_id` as a tenant field elsewhere in the file, but the affected methods rely on either: - Query para ...[truncated 3102 chars]- Remediation
View remediation
