当用户在我们的 Struts 应用程序中注册时,我们希望向他们发送一封电子邮件,其中包含指向不同页面的链接。该链接需要在其查询字符串中包含唯一标识符,以便目标页面可以识别用户并做出相应的 react 。
为了提高该系统的安全性,我想首先加密包含标识符的查询字符串,然后将链接设置为过期 - 在使用后和/或几天后。
您建议我使用哪些 Java 技术/方法来执行此操作?
最佳答案
我将对您的担忧做出一些假设:
- 用户不应猜测其他用户的网址。
- 一旦使用,URL 就不能重复使用(避免 session 重放攻击。)
- 无论使用与否,网址都不应该永远存在,从而避免暴力探测。
这就是我的做法。
- 将用户 ID 和过期时间戳保存在表中。
- 将它们连接成一个字符串,然后从中生成 SHA-1 哈希值。
- 使用 SHA-1 哈希值生成 URL。将所有此类 URL 映射到将执行验证的 servlet。
- 当有人向您发送包含哈希值的页面请求时,请使用它来查找用户和过期时间。
- 用户完成着陆页应执行的所有操作后,将数据库中的行标记为“已使用”。
- 每天运行一项作业来清除已使用或过期的行。
关于java - 使用 Java 保护查询字符串的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/612121/