JS指纹是在客户端使用像fingerprint2这样的库计算的。 .
我的问题是,如果我通过 ajax 发送这个值,用户可以用一点点努力来伪造这个值,并且只发出一个假的 post 请求,它将被服务器代码解释为合法。
我的问题是,如果发生这种情况,甚至无需更改浏览器中的任何属性(这将更改浏览器指纹)就可以轻松绕过该库。
我的解释对吗?我如何确保该值的完整性?
最佳答案
你不能,我真的不会担心。
规则 1:来自用户计算机的所有输入都可以伪造并且不能 100% 依赖。
如果您愿意,您可以将服务器端指纹与库加倍,如 piwik device detector匹配数据,但你却无缘无故地让自己头疼。
90% 访问您的用户,不会知道您在做什么,并为您提供可靠的数据。他们甚至不会有广告拦截。他们会给你可靠的数据。
9% 的访问者可能有一个广告拦截器,它可能会也可能不会阻止这些 ajax 请求。他们希望您尊重他们的隐私,这样做是为了让他们成为客户。 1% 可能知道这些 ajax 请求做了什么,但他们永远不会发现,因为他们不会费心检查他们访问的每个网站的控制台。这 1% 中的 1% 可能会查看浏览器控制台并找出浏览器指纹。
那 1% 的 1% 中的 1% 会窃取您的指纹识别代码。 1% 中的 1% 中的另外 1% 会尝试仅为 lulz 伪造它,然后忘记它。
所以简而言之,不要打扰。人们也不会打扰。
但如果你真的必须打扰,让自己头疼:
gotcha.js?time=1283737273873
发出 javascript 请求。再次使用服务器端脚本进行拦截。然后就可以使用ajax 来更新页面的内容了。
除此之外,我真的可以推荐你:不要打扰。这不值得付出努力。想规避的人会规避。他们将禁用 javascript、排除该脚本、在继续或离开站点之前删除所有 cookie、更改已注册的字体插件等...
不要追逐那些不想被追逐的人。专注于不关心的群体。
关于javascript - 如何保证客户端请求中的指纹值不是伪造的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47094888/