我想识别访问我的API的用户,即使他们在我存储当前会话信息的任何地方清除cookies
或localstorage
。我发现browser fingerprinting
是达到某种准确性的方法之一。我正在为前端工作angular2
项目。我有以下问题:
angular2
的实现,但我想知道散列指纹实际上会有什么影响?对于我的API中的请求,我将检查有效负载是否包含已存在于任何现有会话中的fingerprint
? (真的有效载荷吗?它只是一个POST
请求。用户只需发送一个随机长字符串作为散列fingerprint
,API就会将请求视为来自不同的人。) hashed fingerprint
中生成frontend
,还会在请求到达API后进行验证,例如Google's reCaptcha
。有这样的API吗?请写下你的建议。
答案 0 :(得分:5)
1。似乎不是任何库(移植或其他),特别是 Angular2 。
2。您不需要Angular2版本,只需在 index.html 中注入源文件,就可以像这样使用它, PLUNKER
declare var Fingerprint2: any;
@Component({
selector: 'my-app',
template: `Hello`,
})
export class App {
constructor() {
new Fingerprint2().get(function(result, components){
console.log(result); // a hash, representing your device fingerprint
console.log(components); // an array of FP components
});
}
}
您必须将此哈希视为任何其他令牌,例如JWT
,完全或包含。但是你需要将它存储在某个地方,就像任何其他令牌一样,这样你就可以检查它的真实性。如果用户使用请求和散列进行调整,JWT有一个验证机制,使其在篡改时无效,但我认为指纹散列不能提供安全性。
3。不,没有(IMK)。
4. 如果 no.-2 适合您,我想您会好得多。
答案 1 :(得分:1)
Ankit在Angular方面得到了很多回答。这是一个提供指纹的API,因此您无需自己实现:
虽然此解决方案不是Angular组件(或者你有什么),但您可以进行AJAX调用以获取指纹并将其提交给您的服务器。
完全披露:我是这项服务的开发者。