web-dev-qa-db-ja.com

Webサイトでブラウザの指紋を使用するにはどうすればよいですか?

現在のセッション情報を保存している場所でcookiesまたはlocalstorageをクリアしても、APIにアクセスするユーザーを特定したい。 browser fingerprintingは、これをある程度の精度まで達成する方法の1つであることがわかります。フロントエンドのangular2プロジェクトに取り組んでいます。次の質問があります。

  1. ブラウザの指紋を作成するangular2のライブラリはありますか? (私は ng2-device-detector を見ました。これは多くの情報を提供せず、ハッシュされたフィンガープリントもありません。それで、自分でハッシュする必要がありますか?)
  2. fingerprintjs2 を見たことがありますが、これは多くの情報を必要としますが、angular2の実装はありませんが、ハッシュされた指紋は実際にどのように重要なのでしょうか? APIのリクエストの場合、既存のセッションのいずれかに既に存在するfingerprintがペイロードに含まれているかどうかを確認しますか? (本当にペイロードですか?それはただPOSTリクエストです。ユーザーはハッシュされたfingerprintとしてランダムな長い文字列を送信するだけで、APIはリクエストを別の人から来たかのように扱います。 )
  3. frontendhashed fingerprintを生成するだけでなく、Google's reCaptchaなどのリクエストがAPIに到達した後に検証するAPIを使用する必要があると思います。そのようなAPIはありますか?
  4. そのようなAPIがない場合、そのような機能をAPI自体に実装する必要があると思いますか?

あなたの提案を書いてください。

15
xyz

1。そこにあるようですis n't特に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
    });
  }
}

このhashは、JWTのような他のトークンとして、排他的または包括的に扱う必要があります。ただし、他のトークンと同様に、どこかに保存する必要があります。それが、その真正性を確認できる方法です。ユーザーがリクエストとハッシュを調整する場合、JWTには改ざん時に無効にする検証メカニズムがありますが、フィンガープリントハッシュはその安全性を提供できないと思います。

いいえ、なし(IMK)。

4。もしno.-2があなたのために働くなら、私はあなたがはるかに良くなると思います。

6
Ankit Singh

Ankitは、Angularに関連してほとんど答えました。フィンガープリントを提供するAPIを次に示しますので、自分で実装する必要はありません。

ブラウザフィンガープリントAPI

この解決策はAngularコンポーネント(またはwhat-have-you)ではありませんが、AJAXを呼び出して指紋を取得し、サーバ。

完全な開示:私はこのサービスの開発者です。

1
B Seven