因此,当您在服务器端响应/forgot-password
路由时,对它的最佳响应是什么? (在这种情况下,您不想公开数据库中有哪些用户,而仍然提示应用程序该用户不存在)
今天我遇到了这种情况,在这种情况下,我会用200响应,但是正在使用他的应用程序的同事希望我发送错误,以便他可以实施SMS恢复表单。
想象一下:
POST /forget-password
Body: { username: 'test' }
然后您以404/400和错误消息响应:
{
statusCode: 404,
message: 'User not found'
}
这是一个好习惯吗?或不?
为什么我要问这个?当您使用404响应客户端时,您将暴露数据库中拥有的用户名,这可能是安全漏洞。
什么是最好的方法,为什么?
我认为,无论哪种情况,您都应该以200作为回应,以免让客户遇到任何情况。
答案 0 :(得分:0)
您一开始就正确。您应该返回一个HTTP200。这是为了防止某人使用各种用户名循环查找谁的存在等。
我通常要做的是接受他们输入的任何内容,然后通过电子邮件发送提供的信息“抱歉,该帐户不存在,在此处创建一个帐户”或“此处是您的密码重置链接”。