近日,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中文网其他相关文章!