REST api 错误响应:是否应该提供信息?
REST api error response: should be informative or not?
我正在实施 REST api,我对出现错误时的响应内容存有疑问。例如,我使用 jwt 令牌进行身份验证。如果客户端提供了错误的令牌,服务器将使用以下 body
响应 401 状态代码
{
"status":"failed",
"details":"JWT token not valid"
}
如果客户端不提供令牌,服务器将使用 401 状态代码进行应答,其中包含以下 body
{
"status":"failed",
"details":"missing JWT token"
}
以此类推
这些 HTTP 答案信息丰富,在调试时很有用。问题是攻击者现在知道 API 使用令牌,而不是基本身份验证或其他类型的身份验证系统。
出于这个原因,现在我正在考虑只用状态代码和一个空 body 来回答。此 HTTP 回答不提供信息。攻击者不知道发生了什么,我在调试时也是如此。
我的问题是:最佳做法是什么?信息内容与否?是否有必要创建隐蔽的安全性?
谢谢
如果你 return 401,客户端将看到无论如何都支持哪些身份验证方案:
"The server generating a 401 response MUST send a WWW-Authenticate header field (Section 4.1) containing at least one challenge applicable to the target resource." -- https://greenbytes.de/tech/webdav/rfc7235.html#status.401
我正在实施 REST api,我对出现错误时的响应内容存有疑问。例如,我使用 jwt 令牌进行身份验证。如果客户端提供了错误的令牌,服务器将使用以下 body
响应 401 状态代码{
"status":"failed",
"details":"JWT token not valid"
}
如果客户端不提供令牌,服务器将使用 401 状态代码进行应答,其中包含以下 body
{
"status":"failed",
"details":"missing JWT token"
}
以此类推
这些 HTTP 答案信息丰富,在调试时很有用。问题是攻击者现在知道 API 使用令牌,而不是基本身份验证或其他类型的身份验证系统。 出于这个原因,现在我正在考虑只用状态代码和一个空 body 来回答。此 HTTP 回答不提供信息。攻击者不知道发生了什么,我在调试时也是如此。 我的问题是:最佳做法是什么?信息内容与否?是否有必要创建隐蔽的安全性?
谢谢
如果你 return 401,客户端将看到无论如何都支持哪些身份验证方案:
"The server generating a 401 response MUST send a WWW-Authenticate header field (Section 4.1) containing at least one challenge applicable to the target resource." -- https://greenbytes.de/tech/webdav/rfc7235.html#status.401