检查用户 PIN 时使用什么 HTTP 代码响应?
What HTTP Code response to use when checking user PIN?
我有端点 POST /auth/check-pin
和 JSON 正文
{
"subAccountId": 1,
"pin": 5555
}
当 subAccountId 不存在或 PIN 错误时,我 return 应该如何响应? 404 表示不存在子帐户,400 表示错误 PIN?
404 for not exists subAccount
不,那肯定是错误的。
HTTP 状态代码是 transfer of documents over a network 域的一部分。它们是一种元数据形式,允许通用组件理解响应的语义。
404 的 HTTP 定义是:
The 404 (Not Found) status code indicates that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
目标资源是由请求行中的uri标识的东西。在您的示例中,/auth/check-pin
是此请求的标识符。在此上下文中,404 的含义是我们无法找到 /auth/check-pin
——换句话说,target-uri.
中似乎存在拼写错误
这个意思不是特别适合你的情况,因为你请求中的问题在request-body,而不是在target-uri.
比较合理的选择是403 Forbidden, which roughly translates to "I understood what you want, but I'm not going to do it"; 409 Conflict "the current state of the resource doesn't allow us to do that", or 422 Unprocessable Entity.
在实践中——你选择哪一个并不重要,因为除了语义之外,它们之间没有太多标准化的差异(例如,它们对缓存都有相同的含义)。
这里要考虑的第二件事是您想要向试图猜测 PIN 号码的攻击者泄露多少信息。
如果你给我区分无效帐号和有效帐号的能力,这将大大减少我需要花费的密码来破解密码。
所以如果您处于对此敏感的上下文中,那么您根本不想区分无法识别的 subAccountId 和无法识别的 pin。因此,将对两种情况使用相同的状态代码和相同的响应主体,也许:
403 Forbidden
No more information available
我有端点 POST /auth/check-pin
和 JSON 正文
{
"subAccountId": 1,
"pin": 5555
}
当 subAccountId 不存在或 PIN 错误时,我 return 应该如何响应? 404 表示不存在子帐户,400 表示错误 PIN?
404 for not exists subAccount
不,那肯定是错误的。
HTTP 状态代码是 transfer of documents over a network 域的一部分。它们是一种元数据形式,允许通用组件理解响应的语义。
404 的 HTTP 定义是:
The 404 (Not Found) status code indicates that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
目标资源是由请求行中的uri标识的东西。在您的示例中,/auth/check-pin
是此请求的标识符。在此上下文中,404 的含义是我们无法找到 /auth/check-pin
——换句话说,target-uri.
这个意思不是特别适合你的情况,因为你请求中的问题在request-body,而不是在target-uri.
比较合理的选择是403 Forbidden, which roughly translates to "I understood what you want, but I'm not going to do it"; 409 Conflict "the current state of the resource doesn't allow us to do that", or 422 Unprocessable Entity.
在实践中——你选择哪一个并不重要,因为除了语义之外,它们之间没有太多标准化的差异(例如,它们对缓存都有相同的含义)。
这里要考虑的第二件事是您想要向试图猜测 PIN 号码的攻击者泄露多少信息。
如果你给我区分无效帐号和有效帐号的能力,这将大大减少我需要花费的密码来破解密码。
所以如果您处于对此敏感的上下文中,那么您根本不想区分无法识别的 subAccountId 和无法识别的 pin。因此,将对两种情况使用相同的状态代码和相同的响应主体,也许:
403 Forbidden
No more information available