在摆弄WCF错误契约时,我希望我可以在我的错误中重用我的自定义Exception继承树作为TDetail。在开始工作之后,我开始考虑这个问题(是的,在完成工作之后,你知道这是思考的最佳时机)。我注意到客户端获得了序列化为TDetail的异常的完整堆栈跟踪。
现在我认为这是你没有打开<servicedebug includeExceptionDetailInFaults="true" />
的确切原因。但我不确定。使用我的例外作为TDetail对我来说是否存在安全风险?我的其他选择是什么?
答案 0 :(得分:1)
公开堆栈跟踪并不是那么大的安全风险,但是潜在的可以为atacker提供更多关于系统(数据库,库等)的信息。因此,在我看来,你应该转变生产环境的细节,但在调试时它们是一个很好的帮助。
答案 1 :(得分:1)
如上所述,它可能是一种安全风险,因为它向外界揭示了您的内部系统。但是,TDetail可以是任何东西,因此您可以创建新的异常选项,以保留您希望保留的消息和有趣的异常信息,但清除堆栈跟踪等安全数据,然后将您批准的那些部分序列化到客户端。 / p>
答案 2 :(得分:0)
取决于谁是您服务的消费者。如果我们说你要向外界开放,那么将这些细节传递给服务的客户端并不是一个好主意,因为它可以让服务的消费者了解可能导致安全漏洞的事情。但是,如果你是让我们说在内部使用它并且管理得很好而你想让他们知道如何能够用这些细节做一些事情,那么你的电话会在一天结束时导致它可能在防火墙后面没有打开外部世界和管理员控制的网络我猜测。