我想为用户等进行一些测试,并希望以匿名方式存储结果。我对可能追踪用户并不感兴趣,但另一方面,我需要一种方法来避免重复提交(在特定时间范围内)。所以我的想法是:为什么不只是存储他们的IP地址的哈希并检查后续提交而不是保存实际的IP地址?
这听起来很简单,我担心错过了什么,所以我向专家提出的问题是:
感谢..
答案 0 :(得分:0)
它是否提供了一种相对安全的方法来防止重复提交?
不,用户可以使用代理和其他方法来绕过IP检查。更不用说可以重置调制解调器的动态IP用户了。
它确实为用户提供了合理的匿名性吗?
单向算法将提供最佳的“匿名性”,因为从技术上讲,您无法以简单的方式对其进行反转。由@ ta.speot.is纠正的编辑,即使单向算法也可以轻易破解。
如果您的用户通过HTTP访问您的网页,您的服务器将知道他们的IP并将其记录在访问权限中,我也不明白为什么将“匿名”用于哈希IP级别因此,除非其他人可以访问您数据库的存储数据,否则在对IP进行散列之间没有太大区别。
是否还有其他一些我可能错过的警告或问题(比如过度耗费资源等)?
即使您没有特别指定任何语言,简单的哈希函数也不应从服务器中获取太多资源。 =]
最后,散列IP可能被视为Security through obscurity尝试,因为它不会添加存储未散列IP的功能。
答案 1 :(得分:0)
你是对的 - 存储IP地址哈希对于“匿名”更好。 另外,为了避免重复提交,您可能还需要考虑X-Forwarded-For的值(与IP地址一起)。不是灵丹妙药,而是优于IP地址。