Как использовать отпечаток пальца браузера на моем веб-сайте?
Я хочу идентифицировать пользователей, получающих доступ к моему API, даже если они очищают cookies
или localstorage
везде, где я храню текущую информацию о сеансе. Я вижу, что browser fingerprinting
является одним из способов достижения этой цели с некоторой точностью. Я работаю над проектом angular2
для интерфейса. У меня есть следующие вопросы:
- Существуют ли библиотеки для angular2, которые создают отпечаток браузера? (Я видел ng2-device-detector. Это не дает много информации, а также не имеет хеширования отпечатков пальцев. Итак, нужно ли мне самому хешировать? )
- Вы видели fingerprintjs2, это занимает много информации, но не имеет реализации для
angular2
, но мне интересно, как бы хэшировали отпечаток на самом деле имеет значение? Для запроса в моем API я проверю, содержит ли полезная информация fingerprint
, которая уже существует в любой из существующих сеансов? (Действительно, полезная нагрузка? Это просто запрос POST
. Пользователь может просто отправить случайную длинную строку как хэшированный fingerprint
, и API будет обрабатывать запрос так, как если бы он пришел от другого человека.)
- Я предполагаю, что тогда мне придется использовать некоторый API, который не только генерирует
hashed fingerprint
в frontend
, но также проверяет после того, как запрос достиг API, что-то вроде Google reCaptcha
. Существуют ли такие API-интерфейсы?
- Если API-интерфейсов не существует, то, наверное, мне придется реализовать такую функциональность в моем API-интерфейсе?
Пожалуйста, напишите ваши предложения.
Ответы
Ответ 1
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, я полагаю, вам будет намного лучше.
Ответ 2
Ankit в значительной степени ответил на Angular. Вот API, который обеспечивает отпечаток пальца, поэтому вам не нужно его реализовывать самостоятельно:
API отпечатков пальцев браузера
Несмотря на то, что это решение не является компонентом Angular (или что-то есть), вы можете сделать AJAX-вызов, чтобы получить отпечаток пальца и отправить его на свой сервер.
Полное раскрытие информации: Я являюсь разработчиком этой службы.