使用类似于 fingerprint2 这样的库在客户端计算JS指纹。
我的问题是,如果我通过ajax发送这个值,用户可以轻松地伪造这个值,并且只需进行虚假的POST请求即可被服务器代码解释为合法请求。
我的问题是,如果发生这种情况,即使未更改浏览器属性(以更改浏览器指纹),该库也可以轻松绕过。
我的理解正确吗?如何确保该值的完整性?
使用类似于 fingerprint2 这样的库在客户端计算JS指纹。
我的问题是,如果我通过ajax发送这个值,用户可以轻松地伪造这个值,并且只需进行虚假的POST请求即可被服务器代码解释为合法请求。
我的问题是,如果发生这种情况,即使未更改浏览器属性(以更改浏览器指纹),该库也可以轻松绕过。
我的理解正确吗?如何确保该值的完整性?
您不能这样做,而且我也不会真的担心。
规则1:从用户计算机发出的所有输入都可以被伪造,并且不能100%依靠。
如果您愿意,可以使用像piwik设备检测器这样的库与服务器端指纹识别配合使用以匹配数据,但这会让自己头疼而没有任何原因。
90%的访问者不知道您在做什么并且会向您提供可靠的数据。他们甚至没有广告拦截程序。他们会给您可靠的数据。
9%的访问者可能有广告拦截程序,这可能会阻止那些ajax请求。他们希望您尊重他们的隐私,这样您才能将其视为客户。1%的人可能知道这些ajax请求所做的事情,但他们永远不会去查看每个网站的控制台。1%的1%可能会看一眼浏览器控制台并了解浏览器指纹识别。
1%的1%的1%会窃取您的指纹识别代码。另外1%的1%的1%会尝试伪造它,只是出于好玩的心态,然后就忘了它。
总之,不要费心。人们也不会费心。
但如果您真的必须费心并给自己带来头疼:
gotcha.js?time=1283737273873
使用服务器端脚本再次拦截。然后,您可以使用ajax更新页面内容。除此之外,我真的建议您:不要费心。这不值得花费那么多的精力。想要规避的人会规避。他们会禁用JavaScript,排除该脚本,在继续或离开网站之前清除所有Cookie,更改注册的字体插件等等...
不要追逐那些不希望被追求的人,集中精力关注那些并不在意的群体。检查客户端指纹的完整性是不可能的... 最好的方法是使用PHP来检测内部系统... 我写了一个库,但没有发布... 如果你需要,我可以把它发送给你...
这个库的作用是检测设备的MAC地址... 由于两个系统不能拥有相同的MAC地址... 这是一种获取准确指纹的非常好的方法。