Help us learn about your current experience with the documentation. Take the survey.

生成包含敏感信息的错误消息

Description

应用程序被发现返回了诸如堆栈跟踪(stack traces)之类的错误数据。根据错误消息中包含的数据,攻击者可能会利用这些信息进行进一步的攻击。虽然堆栈跟踪在开发和调试时很有帮助,但在发生错误时不应向用户展示。

Remediation

应用程序应该内部处理异常情况,并将已知的失败类型映射到可以向用户显示的错误代码。这些错误代码应该针对应用程序进行定制,并随相应的 HTTP 错误代码一起返回。

当发生错误时,应用程序会识别错误类型或类别,并向用户显示一个数值。还应该跟踪请求,这样当用户看到错误代码时,它会有一个对应的请求 ID。支持团队随后可以在日志文件中关联 HTTP 错误、定制的错误代码和请求 ID,以确定错误的根本原因,而不会向最终用户泄露详细信息。

返回定制错误的示例:

HTTP/1.1 500 内部服务器错误
...
错误 [0004] 发生,请联系支持或稍后重试您的请求。
请求 ID [a4bc91def12]
...

Details

ID Aggregated CWE Type Risk
209.1 false 209 Passive Low