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 共享数据分析过程
   204   205   206   207   208   209   210   211   212   213   214