假设您正在编写调查应用程序,并希望以某种方式保证结果从用户角度来看是安全的。简单来说,我知道你来自哪个IP,但我想确保你晚上睡得好,因为我知道你对你的回答一无所知。我不能以原始形式存储IP。
我确实需要保证一件事,那就是你回答一次问题。因此,一旦您的PC输入了一些数据,我需要认识到您的PC已经响应了调查。
有关如何最好地处理它的任何建议?
由于 -mac
答案 0 :(得分:5)
创建IP地址的单向散列(以及任何其他唯一标识属性),并将散列与响应一起存储。这样,没有人可以查找响应的IP地址,但您可以将哈希值与之前提交的响应进行比较,以确保人们只提交一次表单。
你无法说服别人尊重他们的隐私。只是不要滥用信任,人们就会解决这个问题。
(有关如何在java中创建哈希的想法,请参阅How can I generate an MD5 hash?)
答案 1 :(得分:3)
您无法保证其中任何一项。所有你能做的就是提高标准,这样就更难绕过它了。如果有人真的想绕过你的跟踪,他们就可以了解你的系统。好事是大多数人要么不想打扰,要么不知道如何。
如果要防止代理问题,可以生成加密哈希并将其存储在人员浏览器的cookie中。许多网站都这样做是为了保持会话创建以跟踪身份验证。这就像使用HMAC生成一些东西,用一个不能伪造的唯一键来标识浏览器。如果他们清除了他们的浏览器,你将无法跟踪它们。
IP地址的单向散列是一种阻止IP被跟踪的方法,但是相同的IP总是散列到相同的值,因此您可以判断某人是否正在这样做。但是,如果他们去网吧中提琴,他们可以重新提交。你可以使用SHA1,MD5等。
您可以使用电子邮件地址执行相同的操作并将其哈希。要让人们想参与,请将结果发送到他们的电子邮件地址,而不是在浏览器中显示。人们只需要相信你不会用他们的电子邮件做坏事。
如果您知道自己想要发送调查对象,也可能会有其他想法。生成标识单个响应的随机数。然后将这些链接发送给人们。他们将根据该号码提交,而您不会跟踪电子邮件 - >随机数,那么你无法将答案与电子邮件地址相关联。一旦使用了随机数,您就不会让它们再次提交。跟踪响应一次。多次显示结果。
你可以将其中的一些结合在一起,试图解决另一方的不足。