Безпека посилань із паролем — що відбувається, коли ви натискаєте
Ви можете додати пароль до свого короткого посилання. Ми показуємо, що відбувається «під капотом» — без використання жаргону — і чому це взагалі варто робити.
Половина посібників про посилання з паролем починається з речення, що це "додатковий рівень безпеки". І на цьому закінчується. На мою думку, це якраз найменш важлива річ, яку можна про це сказати.
Бо «рівень безпеки» нічого не пояснює. Він не каже вам, що відбувається з цим паролем, хто його бачить, або коли він взагалі має сенс. А це єдині питання, які варто собі поставити, перш ніж ви натиснете «Додати пароль».
Отже, по черзі.
Пароль на посиланні — це не те саме, що замок на воротах
Люди уявляють, що пароль надійно закриває посилання. Це не так. Безпека посилань із паролем працює скоріше як квиток на концерт: хто має квиток, той проходить. Хто його комусь віддасть, той теж когось впустить.
Це звучить як недолік. Це не так. Просто потрібно знати, для чого призначений цей механізм.
Три ситуації, у яких це справді стає у пригоді:
Прайс-лист для преміум-клієнтів або документ у версії бета, перш ніж він піде у світ. Без пароля таке посилання рано чи пізно опиниться в Google або перейде з рук у руки.
Зміст із датою придатності. Пропозиція тільки на п'ятницю. Матеріал з конференції виключно для учасників. Пароль робить із посилання контрольований вхід — ти знаєш, що хтось отримав його від тебе, а не знайшов випадково.
І річ, яку ви публікуєте повністю відкрито, але хочете тримати руку на пульсі. Посилання може поширюватися. Без пароля ніхто все одно не зайде.
А тепер те, що цей посібник не мав оминути стороною
Ви вводите пароль у формі. У той самий момент він зникає. Буквально. Те, що ви встановили "tajne123", перестає існувати у зрозумілій формі, перш ніж ви встигнете відпустити кнопку.
Що залишається в базі? Не пароль. Відбиток пальця після нього. Професійно: hash. Рядок символів, який відповідає вашому паролю лише тоді, коли хтось введе точно те саме, що і ви. Сам по собі він нічого не розкриває.
Скажу прямо, бо це важливо: я, як адміністратор сервісу, не маю можливості прочитати твій пароль. Не тому, що я ввічливий. А тому, що фізично немає чого читати. Якби хтось зламав базу, він би просто виніс стопку цих відбитків, і на цьому все.
Алгоритм, який це обчислює, є навмисно повільним. Я знаю, що «повільний» звучить як скарга, але це перевага. Йдеться про те, щоб той, хто вкрав базу, мав витратити абсурдно багато часу на підбір одного пароля. Мова йде про роки, а не про секунди.
Клік з іншого боку
Хтось отримує ваше посилання і клікає. Замість того, щоб одразу потрапити на ціль, він бачить екран: "це посилання захищене паролем", поле для введення, кнопку.
Вводить. Сервер порівнює те, що ввів, із збереженим відбитком. Збігається? Отримує сесійний токен, дійсний добу. Протягом наступних 24 годин повертається за посиланням без введення будь-чого. Не потрібно пам'ятати, не потрібно мучитися.
Не згодні? Помилка. П'ять помилок з тієї самої IP-адреси — і вхід блокується на п'ять хвилин. Бот, який намагається підбирати паролі по черзі, відбивається об стіну.
Чого тут просто немає
Ми не зберігаємо паролі відкритим текстом. Ніде. Навіть у логах, які я переглядаю під час пошуку помилок.
Ми не надсилаємо паролі електронною поштою. Це означає, що якщо хтось забуде пароль, я не зможу його надіслати, бо я його не знаю. Ви маєте надіслати його самостійно, тим самим каналом, що й минулого разу.
І ми не передаємо паролі назовні. Жодна аналітика, жоден маркетинг, жодне AB не торкається цих даних. (Це саме правило, яке діє в усьому cutty.dev, не тільки тут.)
Дві звички, які мають значення
Перший: не вигадуй пароль із голови. Назва компанії плюс рік заснування — це подарунок для кожного, хто тебе знає. Генератор у браузері видасть щось краще за секунду.
Другий, важливіший: не надсилайте пароль тим самим каналом, що й посилання. Посилання пішло електронною поштою? Пароль надішліть SMS-ом. Або навпаки. Сенс у тому, що перехоплення однієї скриньки не дає нікому повного комплекту.
Дрібниця, про яку мало хто знає: ви можете створити кілька посилань, що ведуть на одну й ту саму адресу, але з різними паролями. Ви надаєте доступ п'яти особам, кожному окреме посилання. Хтось має попрощатися? Ви блокуєте його посилання, а решта навіть не помітить.
Пароль зміните без створення нового посилання. Панель, "Редагувати", новий пароль. Увага: усі активні 24-годинні сесії завершуються негайно. Кожен має ввести пароль заново.
Межа, про яку варто знати заздалегідь
Повернімося до квитка на концерт. Пароль захищає від пошукової системи та від випадкового гостя. Він не захищає від того, хто знає пароль і вирішить поділитися ним зі світом.
Якщо ваш сценарій звучить як «це має побачити саме ця одна людина і ніхто більше», то пароля буде недостатньо. Тут вам потрібні акаунти, логін, авторизація. Інша ліга, інша проблема.
Але підніміть руку, як часто у вас насправді буває такий сценарій? З мого досвіду — рідко. У переважній більшості випадків йдеться про звичайне "не хочу, щоб сюди потрапив хтось із вулиці". І на цю фразу вистачає із запасом.
Якщо ви хочете побачити, як це виглядає зсередини — під час створення посилання розгорніть "Додаткові параметри" та позначте "Додати пароль". Решта відбудеться сама собою.