java exception信息_可能通过Java Exceptions暴露敏感信息?

本文探讨了如何防止通过Java异常泄露应用程序的敏感信息,如文件系统结构和非线程安全类信息。建议避免在日志中输出堆栈跟踪,仅使用自定义消息,并在必要时清理异常消息。同时,强调了在客户端-服务器通信中,错误信息应针对用户需求定制,而非暴露内部细节。理想的异常处理应兼顾安全和调试需求。
摘要由CSDN通过智能技术生成

当信任边界交叉时,是否可以通过

Java Exceptions公开敏感的应用程序或系统信息?

我的意思是,不仅在理论上,而且如果在真实环境中发生这种情况.

例如java.io.FileNotFoundException可能告诉调用者我的应用程序的文件系统结构等.

java.util.ConcurrentModificationException

可能会提供有关我的应用程序的非线程安全类的信息.

这种情况可以用以下两种方式处理吗?

>使用Sysouts(仅使用自定义消息)而不是为其他人访问的代码抛出异常?

>如果强制要求抛出异常,请清理消息然后抛出异常

我也想知道点#2是否完全可以避免,并且没有任何强制性情况可以抛出异常.

我的问题不是任何特定的应用程序,而是编程实践(在两个不同的银行等大型企业中需要进行应用程序间通信).

最佳答案 暴露敏感信息的最常见方式是为程序的用户(客户端)提供堆栈跟踪.

堆栈跟踪对于调试问题的程序员非常有用,而对其他任何人都没有用.因此,日志代码不应该输出堆栈跟踪.只有当异常表明程序中存在错误时,才应输出它们.并且应该将它们输出到可供程序员使用的地方,但应尽可能少地输出.

如果程序的日志文件对程序的普通用户不可见,但管理员可以看到(如服务器的情况),那么这是记录堆栈跟踪的适当位置.

类似的论点适用于其他敏感信息.

对于客户端 – 服务器程序,客户端不关心服务器无法处理客户端发送的请求的详细信息.他们需要知道请求确实失败了.如果请求因服务器问题而失败,而不是客户端的错误请求,则需要知道是这种情况,因此他们可以联系管理员来修复服务器.如果请求因客户端发送错误请求而失败,则应告知客户端,并描述有关请求的错误,以便客户端发送更正的请求.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值