当用户在我们的Struts应用程序中注册时,我们希望向他们发送包含指向其他页面的链接的电子邮件。链接需要在其查询字符串中包含唯一标识符,以便目标页面可以识别用户并做出相应的反应。
为了提高这个系统的安全性,我想先加密包含标识符的查询字符串,然后再将链接设置为过期 - 在使用之后和/或几天之后。
您建议我使用哪些Java技术/方法来执行此操作?
答案 0 :(得分:4)
我将对你的担忧作出一些假设:
我是这样做的。
答案 1 :(得分:2)
第一部分请看 Generating Private, Unique, Secure URLs。对于过期,您只需将唯一键创建时间戳存储在数据库中,并且仅允许您的操作在例如now-keyCreatedAt <3天时执行。另一种方法是让cron或Quartz作业定期删除那些为“now-keyCreatedAt&lt; 3天”评估为真的行。
答案 2 :(得分:0)
我认为你可以以无状态的方式做到这一点,即没有其他人建议的数据库表。
当用户点击网址时:
只要你永远不泄露你的秘密盐字符串,就没有人能够伪造对系统的请求。但是,与其他提案不同,此提案不会阻止重播旧网址。根据您的情况,这可能是也可能不可取。