首页 > 解决方案 > /forgot 路由响应的好方法是什么?

问题描述

因此,当您响应(服务器端)/forgot-password路由时,对它的最佳响应是什么?(在您不想公开您在数据库中拥有的用户并仍然提示应用程序该用户不存在的情况下)

今天我遇到了这种情况,我在该路线上回复 200,但我正在开发他的应用程序的同事希望我发送一个错误,以便他可以实施 SMS 恢复表单。

想象一下:

POST /forget-password
Body: { username: 'test' }

你用 404/400 和如下错误消息响应:

{
 statusCode: 404,
 message: 'User not found'
}

这是一个好习惯吗?或不?

我为什么要问这个?当您使用 404 响应客户端时,您会暴露您在数据库中拥有的用户名,这可能是安全漏洞。

什么是最好的方法,为什么?

在我看来,我猜你应该用 200 回应,在任何一种情况下,不要让任何类型的场景给客户。

标签: node.jsexpress

解决方案


你一开始就说对了。您应该返回一个 HTTP 200。这是为了防止有人使用各种用户名进行循环以找出谁存在等。

我通常做的是接受他们输入的任何内容,然后通过电子邮件将提供的信息发送给“抱歉,该帐户不存在,请在此处创建一个”或“这是您重置密码的链接”。


推荐阅读