首页 > 解决方案 > getAuthority() 上 AuthorizationService 中的 SonarQube 警告

问题描述

我有一个 Spring Boot 应用程序,我在调用的方法上收到以下 SonarQube 警告getAuthority()。我应该如何解决它?

控制权限是安全敏感的。它在过去导致了以下漏洞:

@Service    
public class AuthorizationService implements UserDetailsService {

  @Autowired
  private MRepository mRepository;

  public UserDetails loadUserByUsername(String userId) {
    MEntity user = mRepository.findByName(userId);
    if (user == null) {
      throw new UsernameNotFoundException("Invalid username or password.");
    }
    return new User(user.getName(), user.getPassword(), getAuthority());
  }


  private List<SimpleGrantedAuthority> getAuthority() { //here i get the warning
    return Arrays.asList(new SimpleGrantedAuthority("ROLE_ADMIN"));
  }

标签: javaspringspring-securityoauth-2.0sonarqube

解决方案


较新版本的 SonarQube 不仅为您提供代码异味、问题和错误警告,还提供安全热点。这些不是您的代码本身的问题。

正如稍后的警告所说:

此规则标记控制对资源和操作的访问的代码。目标是指导安全代码审查。

这只是意味着您应该仔细查看,因为 Sonar 已在您的代码中确定了授予权限的行。这有助于审阅者发现与安全相关的代码片段。

然而,SonarQube 不能说这段代码是否安全。您需要自己确保这一点。它只是告诉你在哪里看两次。如果此代码对您来说很好,您可以将此 SonarQube 问题设置为“Resolve as Reviewed”。

另请参阅 SonarQube 官方文档:https ://docs.sonarqube.org/latest/user-guide/security-hotspots/


推荐阅读