【发布时间】:2016-05-19 07:42:45
【问题描述】:
背景故事: 我在我的网站上运行了一个 ePetition 类型的服务,我通过电子邮件向人们发送一个链接,他们可以在该链接中“同意”请愿书。此链接仅包含发送者的“petitionID”和“用户名”。
这些信息不是特别敏感,但我仍然要求它是防篡改的,因为我希望他们能够接受而无需登录或在数据库中存储值。
我想到了使用 Java 的 String.hashCode() 函数。
可能将网址设为:用户名、请愿书 ID,然后是哈希
www.website.com/accept.jsp?user='username'&id='petid'&token='1039678106'
令牌可以由用户名 + id(来自链接)+ datePetitionStarted(就像未在 url 中公开的盐一样)组成,例如:
String test = "mike.Who@petitionwebsite.com+1524+09/02/2016";
System.out.println(test.hashCode());
这将给我一个哈希值“1039678106”,这意味着服务器端,我可以获取 ID 参数、人员的用户名并使用 datePetitionStarted,获取哈希码并进行比较。
您认为这是防止篡改的有效方法吗?
我真的在追求一种接受请愿的象征性方法,所以如果有人有任何其他想法,那就太棒了。
谢谢,
迈克
【问题讨论】:
-
你需要一些秘密。可能最好使用 HMAC。
标签: java activation