自动登录最佳做法

flo*_*eft 5 security login user-experience autologin

我正在开发一个Web应用程序,向用户发送电子邮件通知以完成课程/教程.我添加了通过该电子邮件中的链接自动登录用户的功能.这个功能已被添加到互联网上的几个服务,最值得注意的是,OkCupid.

这是我如何设置我的表:

+----+-------------+-------------------+-----------+--------------+----------------------+
| id | key (22)    |  secret (40)      |  user_id  |  action      |  expires             |
+----+-------------+-------------------+-----------+--------------+----------------------+
|  1 | IbQlQW8Dn...|  hdC4dXQJUPA0...  |  1        |  lesson/14   |  2013-06-21 16:28:55 |
+----+-------------+-------------------+-----------+--------------+----------------------+
Run Code Online (Sandbox Code Playgroud)

当用户通过电子邮件访问链接时,例如: http://example.com/go/IbQlQW8Dn8PNXJFFwHQxwh/hdC4dXQJUPA0pU7I6eUiXawbnobYv0iThA [http:/example.com/go/ key/ secret]

服务器首先根据表中的日期检查URL是否未过期.如果它未过期,则用户将自动使用该登录user_id,然后重定向到action列中的给定URL .我为url 使用了两个单独的值(key&secret),只是为了增加安全性(防止fusking).

现在由于网站的性质(视频课程),安全性不是一个大问题,但我仍然想知道要考虑哪些最佳实践.

  • 我应该限制链接的使用次数吗?
  • 目前,我的链接在发送电子邮件后60小时(3天)到期.应该降低吗?
  • 未经授权访问的两个明显风险包括转发电子邮件的人或获得用户电子邮件帐户访问权限的人.还有什么需要考虑的吗?

感谢大家的见解,如果这应该转移到StackExchange的另一部分,请告诉我.我知道我过去曾在这里看过其他最佳实践帖.

u27*_*702 7

发送自动登录链接的风险与在电子邮件中发送密码重置链接的风险非常相似,而且许多网站都这样做.

这是你必须做出的判断.人们没有共同的决策矩阵来决定什么是可接受的风险,哪些不是可接受的风险.你在这里做的更多是一个商业决策,你在权衡安全风险与易用性(可以转化为更多用户和更多业务).

您需要问一个问题:如果此功能被误用,可能会发生的网站可用性,商业信誉和用户体验方面的绝对最糟糕的事情是什么?.

您应该关注的其他事项:

  1. 人们采摘共享无线网络的自动登录链接
  2. 自动登录链接最终在服务器和客户端之间的代理日志中

我建议仅使链接单次使用或保持较短的到期时间.如果链接被过度使用,您还应该进行监控.

当你采取秘密并查询数据库时,你还应该确保你不会受到SQL注入攻击.