gpt4 book ai didi

忘记密码流程的 RESTFul API 设计建议

转载 作者:行者123 更新时间:2023-12-05 00:59:54 25 4
gpt4 key购买 nike

我正在设计用于忘记密码流程的 Restful API。Web应用程序中使用的流程如下:

1) User enters user id
2) Application validates user id and sends verification token to user's email address
3) User will be asked for validation code and new password
4) User will enter validation code and new password
5) Application validates token and updates password.

非常感谢您对如何将此流程转换为 Restful API 的建议。

谢谢你,
拉杰

最佳答案

这是一个非常标准的设计,我认为您可以找到很多资源,甚至可以在某些网站上重置自己的密码,看看它是如何工作的。

基础知识:

  • 客户端在发送用户 id 时会发出 POST 请求。请注意,最好不要说用户 ID/电子邮件是否有效(以避免暴力检查用户 ID/电子邮件是否存在)。此外,请确保您在之前的 token 过期之前无法请求再次重置密码(以防止 DoS 攻击)。
  • 如您所说,服务器将检查关联的电子邮件并最终发送 token 。
  • 用户实际上不需要输入验证 token 。就像大多数网站一样,您可以将其嵌入到您在电子邮件中发送的链接中。请记住为 token 设置合理的过期时间(可能是一小时?)。在这里您应该已经检查了 token 的有效性。
  • 带有 token 的链接将是对特定页面的 GET 请求,在该页面中用户会自动进行身份验证并可以输入新密码(再次提醒:记住 token 的到期时间)。<
  • 用户将通过 POST 请求输入新密码,您再次检查 token 有效性,如果一切匹配,则更新密码。

POSTGET 调用而言,可能类似于:

  • POST https://www.yoursite.com/resetpassword,正文中包含用户 ID/电子邮件。不要将用户 ID/电子邮件作为查询或路径参数,尤其是当您的页面上有广告/横幅时,因为它们可能能够获取该数据。

  • GET https://www.yoursite.com/password?token=dhs3541hpk43hokdsau9ef 其中 token 与重置密码的用户 ID/电子邮件相关联(您应该在数据库)。这里 token 第一次被验证,用户可以在表单中输入新密码。请注意,这可以是您在用户更改密码时使用的相同形式,只是没有 Old password 字段。请注意,您永远不应在此页面上放置横幅/广告。这将是一个严重的安全风险。

  • POST https://www.yoursite.com/password?token=dhs3541hpk43hokdsau9ef 在正文中使用新密码。同样,不要在此页面上放置横幅/广告。服务器将再次检查 token ,如果匹配,则更新密码。然后服务器会将 token 标记为无效/过期。

关于忘记密码流程的 RESTFul API 设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51590664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com