微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查用户PIN时使用什么HTTP代码响应?

如何解决检查用户PIN时使用什么HTTP代码响应?

我的端点POST /auth/check-pin具有JSON正文

{
  "subAccountId": 1,"pin": 5555
}

当subAccountId不存在或PIN错误时,我应该返回什么响应?

解决方法

404不存在的子帐户

不,那肯定是错误的。

HTTP状态代码是transfer of documents over a network域的一部分。它们是元数据的一种形式,它允许通用组件理解响应的语义。

404的HTTP定义是:

404(未找到)状态代码表示原始服务器未找到目标资源的当前表示,或不愿意透露该资源的存在。

目标资源是请求行中uri标识的事物。在您的示例中,/auth/check-pin是此请求的标识符。在这种情况下,404的含义是我们找不到/auth/check-pin,换句话说,目标uri中似乎存在拼写错误。

这个意思不是特别适合您的情况,因为您请求中的问题是在 request-body 中,而不是在target-uri中。

更合理的选择是403 Forbidden,其大致翻译为“我了解您想要的东西,但我不会这么做”; 409 Conflict“资源的当前状态不允许我们这样做”或422 Unprocessable Entity

在实践中-选择哪种选择并不重要,因为除了语义之外,它们之间没有很多标准化的区别(例如,它们对缓存的含义相同)。


这里要考虑的第二件事是要向试图猜测密码的攻击者提供多少信息。

如果您让我能够区分无效帐号和有效帐号,那么这将大大减少我花在破坏密码上的费用。

因此如果您所处的环境对此很敏感,那么您将根本不想在无法识别的subAccountId和无法识别的图钉之间进行区分。因此,可能会在两种情况下使用相同的状态代码和相同的响应正文,

403 Forbidden

No more information available

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。