在我们的网站上,我们根据用户的私人信息(通过表格提供)向用户提供模拟.我们希望以后允许他们重新使用他们的模拟结果,但不要强迫他们创建登录/密码帐户.
我们曾想过给他们发送一封带有链接的电子邮件,他们可以从中获取结果.但是,当然,我们必须保护此URL,因为私有数据受到威胁.
因此,我们打算在URL中传递令牌(如字母和数字的40个字符组合,或MD5哈希)并使用SSL.
最后,他们会收到这样的电子邮件:
您好,
请在https://www.example.com/load_simulation?token=uZVTLBCWcw33RIhvnbxTKxTxM2rKJ7YJrwyUXhXn上取回您的搜索结果
你怎么看待这件事?它足够安全吗?你会为我的令牌生成提出什么建议?如何在https请求中传递URL参数?
SSL将保护传输中的查询参数; 但是,电子邮件本身并不安全,电子邮件可能会在到达目的地之前沿任意数量的服务器反弹.
此外,根据您的Web服务器,可能会在其日志文件中记录完整的URL.根据数据的敏感程度,您可能不希望IT人员访问所有令牌.
此外,带有查询字符串的URL将保存在用户的历史记录中,允许同一台计算机的其他用户访问该URL.
最后,这使得这个非常不安全的是,URL在Referer头中发送给任何资源的所有请求,甚至是第三方资源.因此,如果您使用Google Analytics(分析),则会向Google发送URL令牌及其全部内容.
在我看来,这是一个坏主意.
我会用饼干.工作流程应如下所示:
用户第一次来到您的网站.
网站设置了一个cookie
用户输入数据.使用存储在cookie中的某些密钥将数据存储在DB中.
当用户离开时,您向他们发送一封包含https:链接的电子邮件
当用户回来时,站点会发现cookie并向用户显示旧数据.
现在,用户想要在不同的计算机上使用不同的浏览器.在这种情况下,请提供"转移"按钮.当用户点击此按钮时,她将获得"令牌".她可以在另一台计算机上使用此令牌来重置cookie.这样,用户就决定了她想要转移令牌的安全性.