类型:数据问题 严重性:严重 状态:5.1.已关闭(复测通过)
| 问题描述 | 项目基本信息表单页面的"关联规划项目"按钮,点击进入后可以查询到全网的数据,没有做权限控制,需要根据规划项目信息中的"联系人电话"字段与当前登录人电话进行匹配,匹配成功才可以展示出来 |
|---|---|
| 一级模块 | 项目信息填报 |
| 二级模块 | / |
| 涉及类型 | 全部类型 |
| 是否阻断流程 | 是 |
| 处理人员 | 洪陈解 |
| 复测情况 | 复测通过 |
src/views/projectNew/components/baseInfo/dialog/planRelationSelector.vueprop="iphone",直接渲染 scope.row.iphone(联系人电话),但 searchForm 中从未包含任何"当前登录人电话"字段_getDataList() 调用 projectOrtherApi.getApplicationDataList(this.searchForm),searchForm 只有 provinces/municipal/type/voltageClasses/capacityKw/keyword,没有电话匹配参数src/main/java/cn/csg/so/oms/in/newenergy/project/controller/NePcPspNewNodeController.java 第66-79行:getApplicationDataList(PcPspParam pcPspParam)src/main/java/cn/csg/so/oms/in/newenergy/project/appservice/NePcPspNewGridApplicationAppService.java 第46-97行:getApplicationDataList():
- 第83行 params.put("iphone", pcPspParam.getIphone()) —— iphone 过滤值来自**客户端请求体**而不是服务端登录会话(UserUtils.getUser()),且前端从不传该字段,等效于该过滤永远不生效records.forEach(o->o.setIphone("***********")) —— 返回前把手机号打码,说明后端其实知道这是敏感字段,但只做了"脱敏展示",没做"按手机号收口查询范围"NePcPspNewGridApplicationAppService.java 第46-52行 getApplicationDataList() 方法入口根本原因:手机号匹配这层"是否只让我看跟我相关的规划项目"的过滤条件,设计上是可选的、且取值来自客户端请求体(pcPspParam.getIphone()),前端页面又从未真正填充这个字段,等于该权限过滤形同虚设——任何互联网登录用户打开"关联规划项目"弹窗都能看到全部规划项目的名称、地市、联系人电话等信息。
public IPage<NePcPspGridAppVO> getApplicationDataList(PcPspParam pcPspParam) {
...
Map<String, Object> params = new HashMap<>();
params.put("projectName", pcPspParam.getProjectName());
...
// 修复:iphone 不再信任客户端传参,强制取自当前登录会话
String currentUserPhone = UserUtils.getUser().getPhone();
params.put("iphone", currentUserPhone);
params.put("iphone", pcPspParam.getIphone());
...
}
同时 Mapper(NePcPspGridAppVO_selectApplicationPage / _selectApplicationCount)中 iphone 对应的 <if> 条件需要改为强制 AND CONTACT_PHONE = #{iphone}(非 <if test="iphone != null"> 可选片段),避免服务端仍然允许"不传即不过滤"。
前端 planRelationSelector.vue 无需再自行传手机号(改由后端会话获取),但需要在"暂无规划项目"兜底展示逻辑(第440-451行)中同步说明:匹配不到时应展示"暂无与您匹配的规划项目"而非空白列表,避免用户误以为系统故障。
iphone 来自客户端请求体而非服务端会话)与 row3、row5、row9、row17 反映的是同一类"信任前端传参而非服务端强制收口"的权限设计缺陷,建议作为一类问题统一排查同一 appservice 包下其它接口。