我的主要问题是是否需要包括一个registration_confirmation_code.它是否保护应用程序免受现实威胁或仅增加不必要的复杂性?对此我不确定.
>用户输入电子邮件地址.由于这是一个内部应用程序,它必须是一个代理地址.
>如果这是一个有效的代理机构地址,app会在users表中创建一个新行.
>该表有一个register_confirmed列,默认为false.除非registration_confirmed为真,否则App不会让用户登录.
>该表有一个列registration_confirmation_code,它是一个随机生成的字符串.
>应用程序向用户输入的地址发送电子邮件.它包含一个指向一个页面的链接,该页面将允许用户确认其注册并设置其用户名和密码.
该链接在查询字符串中具有用户的id和registration_confirmation_code:
http://agencydomain.com/users?id=123\u0026amp;registration_confirmation_code=fab49dk34nw97d
>通过点击链接,用户验证他们输入的地址是否有效,并且他们可以访问它.
>该应用程序按ID查找用户.在允许他们访问可以设置其用户名和密码的页面之前,应用程序会检查…
> registration_confirmed是false.他们应该只能一次确认一次.
> registration_confirmation_code请求参数匹配该用户的DB中的值.这确保这是由目标用户进行的合法注册确认,而不是其他人用随机ID尝试劫持注册的URL来进行合法的注册确认.
>如果一切都检出,应用程序将它们带到带有用于设置其用户名和密码的表单的页面.
>当提交有效数据的表单时,应用将registration_confirmed设置为true并注册.
解决方法
一个小问题为什么要这样做两步?为什么不允许用户立即输入密码?这通常对用户来说感觉更舒适.
而且,您可能需要考虑使用用户电子邮件地址的MD5哈希(或类似的)而不是使用registration_confirmation_code.这样,你不需要额外的字段,你甚至可以放弃ID,如果你喜欢.
戴夫
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。