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

标签 angular api security browser browser-detection

我想识别访问我的 API 的用户,即使他们清除了我存储当前 session 信息的 cookieslocalstorage。我看到 browser fingerprinting 是达到一定准确度的方法之一。我正在为前端开发一个 angular2 项目。我有以下问题:

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

请写下您的建议。

最佳答案

1. 似乎没有任何库(移植的或其他的)特别是Angular2

2. 你不需要它的 Angular2 版本,只需将源文件注入(inject)你的 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,排他性或包容性。但是你确实需要将它存储在某个地方,就像任何其他 token 一样,这就是你能够检查其真实性的方式。如果用户对请求和哈希进行调和,JWT 有一种验证机制可以使其在篡改时无效,但我认为指纹哈希无法提供这种安全性。

3. 没有,没有(IMK)。

4. 如果no.-2 对您有效,我想您会过得更好。

关于angular - 如何在我的网站中使用浏览器指纹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44697108/

相关文章:

html - Angular 分量中的未知空间

javascript - 使用 Active Directory 身份验证在 JavaScript 中对 Azure API 应用程序进行 API 调用

Python/Django REST API 架构

c# - 创建 ADO.NET 模型时如何在应用程序代码中设置敏感数据?d 一些标记 a

django - 如何在 Django 中限制静态文件上传的用户?

javascript - 从 *ngIf Angular 5 调用函数

rest - Angular 2 REST 请求 HTTP 状态代码 401 更改为 0

css - Angular 8 - Kendo TextArea 组件中的 formControlName

python - WebDriver 的 Python API 文档在哪里?

asp.net-mvc - 在 ASP.NET MVC 中保护 URL 上的 ID