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

xyz*_*xyz 15 browser security api browser-detection angular

我想,即使他们清除来识别用户访问我的API cookieslocalstorage无论我在哪里存储当前会话的信息.我认为这browser fingerprinting是实现这一目标的方法之一.我正在angular2为前端工作.我有以下问题:

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

请写下你的建议.

Ank*_*ngh 6

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
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

您必须将此哈希视为任何其他标记,例如JWT,独占或包含.但你需要将它存储在某个地方,就像任何其他令牌一样,这就是你能够检查它的真实性的方法.如果用户使用请求和散列进行调整,JWT有一个验证机制,使其在篡改时无效,但我认为指纹散列不能提供这种安全性.

3.不,没有(IMK).

4.如果第2对你的作品,我想你会好得多.

  • 而不是'declare var ...'你应该使用这里的完整类型:https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/fingerprintjs2 (2认同)