За часів «дикого» інтернету на пошту приходило багато спаму, серед них було багато фішингових листів. Наприклад: «Вам нове повідомлення подивіться за посиланням на сайті vkontate»; «Додайте друзів на сайті Однокласники». Мама та інші родичі на це велися. Прив'язки до телефону тоді ще не було, доводилося весь час відновлювати акакунти, або міняти паролі. Настав момент коли мені це набридло і захотілося вирішити проблему раз і назавжди.
В голову прийшла ідея плагіну типу Web OF Trust, але була якась підозра, що червоний індикатор не зупинить рідних від введення пароля на лівих сайтах. Подумавши трохи, придумав іншу ідею, написав скриптик і поставив у хром. Рідним сказав користуватися тільки хромом, паролі ніде не вводити, якщо автоматично не входить - значить сайт підроблений, заходити на потрібний сайт через закладки. Деяким не видав і зовсім їх паролі:).
Я написав розширення - Автологін. До складу входить всього 2 файли - manifest.json і content.js.
У manifest вимагав доступ до потрібних нам сайтів і прописав інжектований скрипт content.js, функціонал у нього простий.
Перевірити url за маскою, якщо підходить - то перевірити DOM на наявність елементів форми логіну по селектору, якщо знайшлися - то заповнити даними і натиснути кнопку submit.
Трохи часу витратив щоб прошерстити сайти mail.ru, vk, Однокласники на наявність форм, потім ще по годині прописати кожному їх логіни і паролі.
Потім ще мені підкинули посилання на форми входу які я пропустив. Додав форми, оновив розширення (в той час Хром ще не блокував девелоперські розширення і вони лежали розпакованими в документах у кожного).
Сам теж став користуватися. Додав вибір акаунта, якщо їх багато - це зручно (у Гугла тоді ще не було можливості перемикатися між акаунтами). Плюс, додатковий захист від троянів - якщо хто і пролізе, то про моє розширення ніхто не знає, хоч там і паролі відкритим текстом лежать. Ще й браузери можуть один у одного паролі з легкістю імпортувати - це трохи напружує.
За час використання розширення ні в кого більше акаунт не відвели. Я убезпечив себе і родичів і повернув свій спокій. Зараз же гугл заблокував власні розширення, і у всіх воно відключилося. Але і люди стали грамотнішими і обережнішими, і до нашого часу фішинг зійшов нанівець.
Ось ніби й історії кінець, але чорт мене смикнув зробити нормальний інтерфейс користувача для розширення. А все тому, що один друг побачив, зацікавився і попросив собі.
На жаль так потім і не вийшло йому його поставити...
І що там говорять про 20% зусиль і 80% функціоналу? Так ось це все 95 на 5 вийшло!
Якщо вже випускати розширення в світ, то треба його довести до розуму.
Вимог зросла відразу купа:
- Шифрування даних, різні способи: для лінивих і для параноїків;
- Придумати структуру зберігання даних, 1 акаунт - багато сайтів, багато форм;
- Вигадати систему оновлення бази форм. Сайтів багато, за всіма стежити самому не вийде;
- Синхронізація між переглядачами.
Для шифрування знайшов бібліотеку github.com/mdp/gibberish-aes.
Для ледарів генерую ключ, зберігаю його в базі і ним шифрую паролі.
Для параноїків шифрую ключ майстер-паролем.
Для помірних параноїків - зберігаю майстер-пароль в оперативці і більше не питаю.
До речі, не підкажете, наскільки надійне таке шифрування?
Для зберігання даних github.com/knadh/localStorageDB - щось на зразок mongoDb, обгортка над localstorage, зручно робити імпорт експорт.
Для оновлення бази форм використовуючи github, при старті браузера перевіряю сховище на оновлення, таким чином можна буде призначити контриб'юторів, які оновлюватимуть базу.
Користувальницький інтерфейс написав на JqueryUI з плагінами. Щоб почати користуватися, треба зайти на вкладку «Провайдери» - вибрати провайдера, чий акаунт Ви хочете зберегти, і заповнити форму.
Рівень шифрування - це налаштування для халявників і параноїків. Рівень 1 і 2 не доступний, поки не увімкнути «Розширену безпеку» (включити можна на вкладці налаштувань).
Розширена безпека забезпечує додаткове шифрування паролів.
Рівень безпеки 0 не забезпечує безпеку паролів. Дані акаунтів не можна подивитися відкритим текстом, але фахівець зможе розшифрувати їх без проблем. Паролі зберігаються зашифрованими в базі, ключ шифрування також зберігається в базі.
Рівень безпеки 1 забезпечує безпеку паролів за дотримання певних умов: не залишати відкритим переглядач після введення ключа шифрування. Ключ шифрування запитується один раз і зберігається в оперативній пам'яті браузера.
Рівень безпеки 2 забезпечує максимально можливу безпеку паролів. Ключ шифрування запитується завжди, ніде не зберігається використовується тільки для розшифрування акаунта і подальшої авторизації.
Також тут є налаштування - «використовувати для безлічі акаунтів одного провайдера». Модальне діалогове вікно, затінює всю сторінку і показує список акаунтів, розмір шрифту підлаштовується, щоб показати всі акаунти. Іконка-інформер просто з'являється в адресному рядку, і тільки при натисканні на ній показує меню вибору акаунтів.
Резервне копіювання зроблено простою серіалізацією бази даних у JSON, імпорт, експорт у файл.
Для мене розширення зручне, постійно користуюся. Вихідники лежать на GitHub, може ще комусь знадобляться. У webstore викладати не наважився, навряд чи пропустять з такою функціональністю.

