java - 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"));
}
解决方案
较新版本的 SonarQube 不仅为您提供代码异味、问题和错误警告,还提供安全热点。这些不是您的代码本身的问题。
正如稍后的警告所说:
此规则标记控制对资源和操作的访问的代码。目标是指导安全代码审查。
这只是意味着您应该仔细查看,因为 Sonar 已在您的代码中确定了授予权限的行。这有助于审阅者发现与安全相关的代码片段。
然而,SonarQube 不能说这段代码是否安全。您需要自己确保这一点。它只是告诉你在哪里看两次。如果此代码对您来说很好,您可以将此 SonarQube 问题设置为“Resolve as Reviewed”。
另请参阅 SonarQube 官方文档:https ://docs.sonarqube.org/latest/user-guide/security-hotspots/
推荐阅读
- firebird - 如何在 Firebird 2.5.x 中获取服务器名\主机名
- shell - 如何在shell脚本中循环逗号分隔值
- android - 构建到较低的操作系统版本时如何修复对话框变形?
- kotlin - Freemarker 模板中的 Kotlin 扩展方法
- php - 使用 Codeigniter 和 PhpSpreadsheet 获取 ERR_INVALID_RESPONSE
- java - 从日期中仅获取月份并在java中给出月份名称
- php - 无法连接到共享服务器上的 Fusio (api-manager)
- angular - ngFor 中的 AsyncPipe 用于项目
- java - 使用多个线程池和连接池
- python-2.7 - os.chdir 找不到远程共享驱动程序