Безопасность ссылок с паролем — что происходит при клике
Вы можете добавить пароль к своей короткой ссылке. Мы показываем, что происходит «под капотом» — без использования жаргона — и почему это вообще стоит делать.
Половина руководств о ссылках с паролем начинается с фразы, что это «дополнительный уровень безопасности». И на этом всё. На мой взгляд, это как раз наименее важное, что можно об этом сказать.
Потому что «слой безопасности» ничего не объясняет. Он не говорит вам, что происходит с этим паролем, кто его видит и когда он вообще имеет смысл. А это единственные вопросы, которые стоит себе задать, прежде чем нажать «Добавить пароль».
Итак, по порядку.
Пароль по ссылке — это не то же самое, что замок на воротах
Люди представляют себе, что пароль надежно закрывает ссылку. Это не так. Безопасность ссылок с паролем работает скорее как билет на концерт: у кого есть билет, тот проходит. Кто его кому-то отдаст, тот тоже кого-то впустит.
Это звучит как недостаток. Это не так. Просто нужно знать, для чего служит этот механизм.
Три ситуации, в которых это действительно пригодится:
Прайс-лист для премиум-клиентов или документ в бета-версии, прежде чем он увидит мир. Без пароля такая ссылка рано или поздно окажется в Google или перейдет из рук в руки.
Содержимое со сроком действия. Предложение только на пятницу. Материалы конференции исключительно для участников. Пароль превращает ссылку в контролируемый вход — вы знаете, что кто-то получил его именно от вас, а не нашел случайно.
И вещь, которую вы публикуете в открытом доступе, но хотите держать руку на пульсе. Ссылка может распространяться. Без пароля никто и так не войдет.
А теперь то, что этот гайд не должен был упустить
Вы вводите пароль в форме. В тот же самый момент он исчезает. Буквально. То, что вы установили "tajne123", перестает существовать в читаемом виде, прежде чем вы успеете отпустить кнопку.
Что остается в базе? Не пароль. После него — отпечаток пальца. Профессионально: хеш. Строка символов, которая совпадает с вашим паролем только в том случае, если кто-то введет точно то же самое, что и вы. Сама по себе она ничего не раскрывает.
Скажу прямо, потому что это важно: я, как администратор сервиса, не могу прочитать ваш пароль. Не потому, что я вежлив. А потому, что физически нечего читать. Если бы кто-то взломал базу данных, он бы просто вынес стопку этих отпечатков, и на этом всё.
Алгоритм, который это вычисляет, намеренно медленный. Я знаю, что «медленный» звучит как жалоба, но это преимущество. Суть в том, чтобы тот, кто украл базу данных, должен был потратить абсурдно много времени на подбор одного пароля. Речь идет о годах, а не о секундах.
Клик с другой стороны
Кто-то получает вашу ссылку и кликает. Вместо того чтобы сразу попасть на цель, он видит экран: «эта ссылка защищена паролем», поле для ввода, кнопку.
Вводит. Сервер сравнивает введенное с сохраненным отпечатком. Совпадает? Получает сессионный токен, действительный в течение суток. В течение следующих 24 часов он может переходить по ссылке, ничего не вводя. Ему не нужно помнить, ему не нужно мучиться.
Не согласны? Ошибка. Пять ошибок с одного и того же IP-адреса — и вход блокируется на пять минут. Бот, который пытается подбирать пароли по очереди, наткнется на стену.
Чего здесь просто нет
Мы не сохраняем пароли в открытом виде. Нигде. Даже в логах, которые я просматриваю при поиске ошибок.
Мы не отправляем пароли по электронной почте. Это значит, что если кто-то забудет пароль, я не смогу его прислать, так как я его не знаю. Вы должны отправить его самостоятельно тем же каналом, что и в прошлый раз.
И мы не передаем пароли вовне. Никакая аналитика, никакой маркетинг, никакое AB-тестирование не касается этих данных. (Это как раз правило, которое действует во всем cutty.dev, а не только здесь.)
Две привычки, которые имеют значение
Первый: не придумывай пароль из головы. Название компании плюс год основания — это подарок для каждого, кто тебя знает. Генератор в браузере выдаст что-то получше за секунду.
Второй, более важный: не отправляйте пароль тем же каналом, что и ссылку. Ссылка ушла по почте? Пароль отправьте через SMS. Или наоборот. Смысл в том, что перехват одного канала не даст никому полного набора данных.
Мелочь, о которой мало кто знает: вы можете создать несколько ссылок, ведущих по одному и тому же адресу, но с разными паролями. Вы даете доступ пяти людям, каждой отдельную ссылку. Кому-то пора попрощаться? Вы блокируете его ссылку, а остальные даже не заметят.
Пароль можно изменить без создания новой ссылки. Панель, "Редактировать", новый пароль. Внимание: все активные 24-часовые сессии прерываются немедленно. Каждому придется вводить пароль заново.
Граница, о которой стоит знать заранее
Вернемся к билету на концерт. Пароль защищает от поисковика и от случайного гостя. Он не защищает от того, кто знает пароль и решит поделиться им с миром.
Если ваш сценарий звучит как «это должен увидеть именно этот один человек и никто больше», то одного пароля будет недостаточно. Здесь вам понадобятся аккаунты, логин и авторизация. Это другая лига, другая проблема.
Но поднимите руку, как часто у вас на самом деле бывает такой сценарий? По моему опыту — редко. В подавляющем большинстве случаев речь идет о простом «я не хочу, чтобы сюда заходил кто попало с улицы». И этого аргумента вполне достаточно с запасом.
Если вы хотите увидеть, как это выглядит изнутри — при создании ссылки разверните «Дополнительные параметры» и отметьте «Добавить пароль». Остальное произойдет автоматически.