java - 使用 Java 保护查询字符串的最佳方法是什么?

标签 java security url encryption

当用户在我们的 Struts 应用程序中注册时,我们希望向他们发送一封电子邮件,其中包含指向不同页面的链接。该链接需要在其查询字符串中包含唯一标识符,以便目标页面可以识别用户并做出相应的 react 。

为了提高该系统的安全性,我想首先加密包含标识符的查询字符串,然后将链接设置为过期 - 在使用后和/或几天后。

您建议我使用哪些 Java 技术/方法来执行此操作?

最佳答案

我将对您的担忧做出一些假设:

  1. 用户不应猜测其他用户的网址。
  2. 一旦使用,URL 就不能重复使用(避免 session 重放攻击。)
  3. 无论使用与否,网址都不应该永远存在,从而避免暴力探测。

这就是我的做法。

  • 将用户 ID 和过期时间戳保存在表中。
  • 将它们连接成一个字符串,然后从中生成 SHA-1 哈希值。
  • 使用 SHA-1 哈希值生成 URL。将所有此类 URL 映射到将执行验证的 servlet。
  • 当有人向您发送包含哈希值的页面请求时,请使用它来查找用户和过期时间。
  • 用户完成着陆页应执行的所有操作后,将数据库中的行标记为“已使用”。
  • 每天运行一项作业来清除已使用或过期的行。

关于java - 使用 Java 保护查询字符串的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/612121/

相关文章:

.NET 库来清理输入?

java - 如何从属性文件的服务器路径获取 URL 位置

java - 将数据保存到文件 - 什么对象应该负责?

Java : Proper way a method() should handle a bad call

java - 三元中的三元

javascript - 防止 MVC 提供 .js、.css 等静态文件

php - Web 服务身份验证 - PHP

java - 仅当附加文本时 JTextArea 滚动到底部

android - 在 Android 中下载文件

javascript - Rails 中的基本 API