如果浏览器指纹发生变化,我应该要求用户重新进行身份验证吗?是否有服务器端库可用?
许多定义了指纹的事物可能会经常发生变化。例如,支持的字体列表。此外,一些浏览器实现了透明更新;Chrome 是臭名昭著的:甚至可以应用一些更新,而不需要用户重新启动他的 Web 浏览器。任何此类更新都可以更改指纹。
作为“安全”站点(即明显需要安全性的站点,例如在线银行)的用户,任何此类明显虚假的“安全重置”都会让我紧张不安。我不认为让你的用户紧张是一件好事。此外,这将训练他们在随机时刻重新输入他们的凭据,这势必会使他们粗心并容易受到网络钓鱼的攻击。
因此,我建议不要因为指纹更改而停用会话。无论如何,如果攻击者可以窃取会话,他可能也可以模仿指纹,因此设想的安全功能只能捕获非攻击者,这在整体效率上是值得怀疑的。
是的,有一个可能的好处。指纹的变化表示访问该站点的机器可能发生变化。这是连接嗅探/劫持和著名的FireSheep的症状。缺点是需要用户重新登录的误报。如果它发生很多,这对用户来说很烦人。
您可能希望过滤掉常见更改(较小的浏览器或操作系统升级、我们使用显示器的笔记本电脑用户的屏幕分辨率更改),但如果凭据从 IE 到 Mozilla 或从 Mac 到 Windows,则可能值得标记。
仍然存在用户使用 USB 驱动器上的浏览器配置文件四处走动的边缘情况,但这是我可能会忽略的边缘情况。
我不会依赖浏览器指纹识别作为一种强大的安全方法;这只是默默无闻的安全性(这可能有助于将您的妹妹与您的数据隔离开来;但不会阻止强大的对手,击败他们只会有点烦人)。使用 SSL 和安全 cookie。
修改网络浏览器以更改其指纹以模仿另一个浏览器的指纹似乎相当简单。例如,更改 UserAgent 字符串/时区/屏幕大小/等。
我不确定是否可以随时使用工具来伪造插件列表/系统字体列表,但原则上这并不难伪造,而且由于浏览器指纹识别是在 javascript 中完成的,所以要弄清楚它到底是什么并不难检查并让您的自定义浏览器从其他浏览器重播正确的设置。