Page 209 - 《软件学报》2026年第7期
P. 209
2894 软件学报 2026 年第 37 卷第 7 期
用的开发框架与协议等信息, 灵活确定程序中与可信源相关的污点源模式, 例如图 6(a) 中, 将 SessionHelper.
getOperateUserType 调用语句返回值作为可信源模式.
分
类 鉴权代码相关片段 多标签污点分析过程
@RequestMapping(“/user/update”)
public void updateUserInfo(String id, String password) {
String userType = SessionHelper.getOperateUserType(); t trust
垂 if (userType.equals (“admin”)) {
直
鉴 User user = new User(); userType
权 user.setId(id);
I user.setPassword(password);
userMapper.update(user);
equals( )
}
} (a)
@RequestMapping(“/user/update”)
public void updateUserInfo(String id, String password) { t trust
Լ String userId = SessionHelper.getOperateId();
ᆰ User admin = adminMapper.queryById(userId); userId
if (admin != null) {
ಃ ... adminMapper.queryById
II
userMapper.update(user);
}
admin != null
} (b)
@RequestMapping(“/user/update”)
public void updateUserInfo(String id, String password) {
水 String userId = SessionHelper.getOperateId(); t trust t input
平 if (userId.equals(id)) {
鉴 userId id
权 ...
I userMapper.update(user);
} equals( )
} (c)
@RequestMapping(“/user/update”)
public void updateUserInfo(String id, String password) { t trust t input
水 String userId = SessionHelper.getOperateId();
平 User user = new User(); userId password
鉴 user.setId(userId);
权 user.setPassword(password);
II user.id user.password
userMapper.update(user);
// update user set password = #{password} where id = #{id}
userMapper.update( )
} (d)
@RequestMapping(“/order/update”)
public void updateOrder(String orderId, String pay State) { t trust t input
水 String userId = SessionHelper.getOperateId();
平 Order order = orderMapper.queryById(userId, orderId); userId id
鉴 if (order.getOrderInfo() != null) {
权
order.setPayState(payState); orderMapper.queryById
III
orderMapper.update(order);
}
order.getOrderInfo( ) != null
}
(e)
图 6 共享数据分析过程

