近日,php小编西瓜为您带来了一篇关于java方面的问答文章,重点讨论了如何在spring-boot中避免向客户端暴露后端详细信息的问题。在开发过程中,如何处理异常信息、错误提示等敏感信息,避免泄露敏感数据,是开发者需要重点关注的问题之一。本文将为您解答这些疑惑,帮助您更好地保护应用程序的安全性。
当遇到错误/不存在的 spring-boot 端点时。代码级别的类详细信息被公开。这可能会被标记为安全问题。
示例
请求
localhost:8500/api/1.0/service/../msc -> this is a bad formatted endpoint, which does not exist.
回应
{
"timestamp": "2024-01-31t08:33:44.321+0000",
"status": 400,
"error": "bad request",
"message": "failed to find lookuppath '/api/1.0/msc' within requesturi '/api/1.0/service/../msc'. this could be because the path has invalid encoded characters or isn't normalized.; nested exception is org.springframework.web.servlet.resource.resourceurlencodingfilter$lookuppathindexexception: failed to find lookuppath '/api/1.0/msc' within requesturi '/api/1.0/service/../msc'. this could be because the path has invalid encoded characters or isn't normalized.",
"path": "/api/1.0/service/../msc"
}只需查看错误消息,我们就可以了解到有一个 spring-boot 应用程序在后台运行,由于消息中公开了代码级别的详细信息,因此它可能是一个漏洞。
我们如何向客户端发送通用消息而不是整个异常详细信息?
我也尝试过使用@controlleradvice,但其中没有捕获异常。看起来这个问题甚至在到达控制器本身之前就已经出现了。
@ExceptionHandler(Exception.class)
public ResponseEntity handleException(Exception ex) {
log.error("Exception in flow", ex);
ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
}您可以使用多种方法的组合来处理该异常并且不泄漏它,请参阅 https://www.php.cn/link/41fa3925a7ec42ce029c43d6676e4b2c 以检查不同类型的处理程序。
以上就是避免在 spring-boot 中向客户端暴露后端详细信息的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号