我有一个用于用户授权的大型API和JSON令牌(JWT)。这些令牌在前端(nginx代理)上使用Lua代码进行验证。现在,我想用浏览器指纹来保护我的API。其思想是将客户端指纹存储在JWT令牌中,并在每个请求中将此指纹从客户端传递到服务器。如果指纹匹配在一起,那么就可以了,如果没有,我们就阻止访问,因为我们的令牌可能被偷了。
创建浏览器指纹的方法很多,Fingerprintjs2似乎是一个很好的解决方案。我想知道的是,在现实世界中,他们是如何存储这个指纹的(或者每次都是动态生成的?)以及如何将其提交给服务器(使用cookie、头、get或post参数)。
发布于 2017-11-06 12:36:42
指纹只用于安全以外的任何东西,所以不要使用它来达到这样的目的。
由于您使用的是openresty,您实际上可以向会话处理程序添加安全性,露-瑞-会议在存储会话数据的位置有几个不同的选项。
当您阅读可插入式存储适配器时,您会看到一个存储适配器表。
为了您的目的,我建议您用Extra Security实现一个,并实现HMAC。
这将确保会话数据留在服务器上,并且客户端只有一个HMAC令牌,它们不能在不丢失会话的情况下更改它。
为了获得额外的保护,您可以向身份验证Lua添加一些代码,以确保在ip源更改时会话无效。
我希望这能回答你的问题。
--包括我对这位律师的评论.
指纹可以用来增强特定用户的确定性,但它不适合替代其他识别手段。
(将其视为海关官员的身份证检查,您的护照确认您的身份,其编号(以及自动系统所做的检查)确认该文件是真实的。你的照片可以用来向警官证明自己的身份。因此,总的来说,虽然只有一个主要的真实性载体(护照),但有许多检查,以验证它。
每一次检查都增加了他/她自称的人的确定性。作为身份验证方案的一部分,您可以将指纹作为附加信息添加到身份验证中。但是,它不应取代其他证据,因为它的普遍性,并容易伪造或提取通过其他手段。
https://security.stackexchange.com/questions/172928
复制相似问题