如何在我的网站中使用浏览器指纹?

时间:2017-06-22 10:43:02

标签: angular api security browser browser-detection

我想识别访问我的API的用户,即使他们在我存储当前会话信息的任何地方清除cookieslocalstorage。我发现browser fingerprinting是达到某种准确性的方法之一。我正在为前端工作angular2项目。我有以下问题:

  1. 是否有可用于angular2的库创建浏览器指纹? (我看过ng2-device-detector。这没有提供太多信息,也没有散列指纹。所以,我自己要哈希吗?)
  2. 已经看到fingerprintjs2这确实需要很多信息,但没有angular2的实现,但我想知道散列指纹实际上会有什么影响?对于我的API中的请求,我将检查有效负载是否包含已存在于任何现有会话中的fingerprint? (真的有效载荷吗?它只是一个POST请求。用户只需发送一个随机长字符串作为散列fingerprint,API就会将请求视为来自不同的人。)
  3. 我想我必须使用一些API,它不仅会在hashed fingerprint中生成frontend,还会在请求到达API后进行验证,例如Google's reCaptcha。有这样的API吗?
  4. 如果没有这样的API那么我想我必须在我自己的API中实现这样的功能吗?
  5. 请写下你的建议。

2 个答案:

答案 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,因此您无需自己实现:

Browser Fingerprint API

虽然此解决方案不是Angular组件(或者你有什么),但您可以进行AJAX调用以获取指纹并将其提交给您的服务器。

完全披露:我是这项服务的开发者。