在暴力攻击的情况下,REST应该为锁定用户返回的正确状态代码是什么?实际上,当用户在最后3分钟内三次失败密码时,就会锁定它的帐户。
如果他第四次尝试登录,它将收到状态代码401的{"success":"false"}
响应。正式上说对不对?
发布于 2017-11-02 15:30:56
我是茶壶
如果您确定您的应用程序受到攻击,您可以返回418
(我是一个茶壶),并在响应有效负载中使用一条“短而结实”的消息。
未经授权和禁止
对于HTTP身份验证(无状态和在Authorization
头中发送凭据),请使用401
(未经授权)来指示该请求的凭据已被拒绝。
假设凭据是有效的,但用户帐户被锁定(或在任何其他条件下阻止服务器接受请求),则可以在有效负载中使用403
(禁止)和描述性消息。来自RFC 7235的报价
接收到不足以获得访问权限的有效凭据的服务器应该使用
403
(禁止的)状态代码进行响应。
发布于 2020-09-06 21:42:34
403禁止
403意味着“是的,我知道你的情况,你的证件甚至可能是有效的,但我还是拒绝了你”。无论是由于锁定,您的IP被禁止,月球的相位不是正确的,等等,您可以使用这个信号,请求是无效的原因。
发布于 2022-03-29 22:15:12
帐户锁定并不总是最好的解决方案,因为有人可以很容易地滥用安全措施并锁定数百个用户帐户。事实上,有些网站遭受了如此多的攻击,以至于它们无法强制执行锁定策略,因为它们会不断地打开客户帐户。有关更多信息,请参见OWASP阻塞Brute部队攻击。
如果服务器检测到太多请求,并且不希望永久阻止客户端,则应发送状态代码:
429太多请求
HTTP 429太多的请求响应状态代码表明用户在给定的时间内发送了太多的请求(“速率限制”)。
此响应可能包含重试后头,指示在发出新请求之前等待多长时间。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429
https://stackoverflow.com/questions/47077936
复制相似问题