Что такое сокращатель URL? Это по сути шифратор ссылок, который скрывает от получателя истинный адрес ресурса. Кому нужно маскировать свои ссылки и прятать истинный адрес? Ясно кому: мошенникам, злоумышленникам и компаниям, у которых URL не помещается на визитку.
В последнее время многие облачные сервисы напрямую интегрировали сокращатели ссылок: например, Google Maps, Microsoft OneDrive дают ссылки на
1drv.ms
и goo.gl
с коротким токеном. Раньше некоторые сокращалки выдавали токен из 5-6 символов, но потом осознали свою ошибку. Проблема в том, что пространство таких токенов настолько маленькое, что его можно просканировать брутфорсом (см. работу Мартина Георгиева и Виталия Шматикова из Корнелльского технологического университета, arXiv:1604.02734v1). А ведь пять символов — это всего 625 вариантов, а шесть символов — 626, тоже не очень много (56,8 млрд). Такая секретная ссылка — больше не секретная.Это далеко не единственная причина, почему следует избегать чужих сокращателей.
Сначала пару слов и мифах, в которые верят люди. Эта ложная информация подталкивает некоторых пользователей к использованию сокращателей.
Мифы о сокращателях
Миф об экономии символов в твите
Один из древнейших мифов. На самом деле, используя внешний сокращатель, вы делаете совершенно необязательную и ненужную работу. В наше время все платформы автоматически сокращают все ссылки, см. справку Twitter и LinkedIn.
Тем самым платформы угрожают своей безопасности и пользователям, но это уже другой вопрос. В любом случае, лучше не публиковать ничего в открытом доступе. Но если вы всё-таки вынуждены совершить какие-то действия в социальных сетях, то внешний сокращатель ссылок точно ни к чему.
Миф об аналитике
Некоторые сокращатели ссылок предлагают пользователям богатую аналитику по количеству переходов и другую статистику. Но там нет ничего, что бы вы сами не смогли получить, используя бесплатные опенсорсные сервисы для аналитики на своём хостинге, а также данные соцсети. Социальная сеть сама вам расскажет, сколько раз перешли по ссылке и какой у неё CTR.
Если вы ведёте бизнес в соцсети и действительно хотите получить более продвинутую аналитику, то лучше использовать трекинговые модули UTM (Urchin Tracking Modules), а не на сокращатели ссылок:
Проблемы сокращателей
Ноль приватности
У вас нет способа контролировать чужой сокращатель. Некоторые из них ведут себя не совсем корректно. Например, устанавливают следящую куку на ваше устройство для дальнейшего отслеживания действий в интернете. Это нормальная практика, так же делают Google, Facebook и другие сайты, зарабатывающие на персональном таргетинге рекламы. Для эффективного таргетинга рекламы им нужно собрать подробное досье на каждого человека.
Ноль смысла
В сокращённом URL — бессмысленный набор символов, который практически невозможно запомнить. Он ничего не говорит о настоящем адресе, о названии сайта и о странице, на которую ссылается. И его вряд ли можно ввести вручную, по памяти, или продиктовать по телефону.
Битые ссылки
Если сокращатель выходит из строя, то ваши ссылки становятся недоступны. Если вы пользовались только одним сокращателем для всех ссылок, то все они одномоментно выходят из строя!
Думаете, такого никогда не произойдёт? Взгляните на список умерших сокращателей!
Свой сокращатель
Так что лучше избегать сторонних сервисов, а в случае необходимости написать свой собственный сокращатель и запустить его на своём сервере. Например, у известного программиста и евангелиста Григория Бакунова это заняло 40 минут. Впоследствии Григорий отдал проект компании «Яндекс».
Запустить сокращатель — действительно проще простого. Его можно настроить даже в облаке. Например, инстанс в S3 может работать как движок редиректа. Или любой другой хостинг. Просто для каждого короткого URL создаёте объект с редиректом на целевой URL, вот и всё. Если нужна аналитика, то придётся постараться, но в базовой функциональности нет ничего сложного.
Все свои длинные ссылки можно обработать собственным сокращателем. Хотя это не избавляет от некоторых проблем с потерей смысла, но и угроз безопасности намного меньше, чем с внешним сокращателем. То есть свой сокращатель — просто меньшее зло.
Так или иначе, но сокращатели ссылок в целом — это лишний уровень абстракции, увеличение поверхности атаки: перехват и подмена ссылок, фишинг, трекинговые куки, непредсказуемый URL.
Хотя любые недостатки можно превратить в преимущества. Например, сокращатель позволяет изменить URL для ссылок NSFW, чтобы передать их товарищу в чате. Есть сокращатель для ребрендинга. Кто-то любит шутки и приколы. Бывают не сокращатели, а удлинители ссылок. А если запустить свой собственный сервис, то пространство возможных шуток расширяется на порядок. Некоторые люди на многое готовы ради «лулзов» — в этом же «весь смысл».
kloppspb
Я не понимаю, как это может занять больше часа...
putnik
Ну, я вот наоборот не понимаю, как тут можно считать только чистое время. Если мне понадобился свой сокращатель, то наверняка не просто так. Значит мне нужно зарегистрировать домен и настроить DNS, развернуть хостинг, хоть как-то минимально настроить деплой, бэкапы, сделать хотя бы тупую админку с авторизацией и просмотром каких-то основных данных.
Вот и получается уже практически полноценный рабочий день. Зато, один раз нормально настроив, можно забыть про такой сервис до момента, когда понадобится расширение функционала.
Или же под «запустить» уже понимается накидать на коленке MVP, который работает до первого «ой»? Если так, и нет ресурсов, то может для лучше всё-таки воспользоваться API какого-нибудь публичного сервиса?
pavelpromin
По сути одна лямбда функция на амазоне + букмаклет в браузере
Самое долгое наверное тут - обновление DNS записи ;)
GospodinKolhoznik
Как то вы это слишком упрощаете.
Надо предварительно провести цикл совещаний на самом разном уровне - от специалистов до высшего руководства, выработать общую концепцию сокращения ссылок, согласовать её со всеми, обозначить периметр ответственности на случай, если что то пойдёт не так, запросить у юристов юр. заключение, узнать почему выработанная концепция противоречит действующему законодательству, изменить концепцию, пересогласовать, внести соответствующие изменения в регламенты организации. Только после этого можно переходить непосредственно к тех. реализации.
Поэтому я проголосовал за "я не смогу".
kloppspb
1)
create table short_url (
id
bigint primary key,url
text );2)
Получили URL, записали в таблицу. Взяли ID записи, перевели в 62-ричную ССдогадайся сам почему 62, отдали ссылку вида http://xxx.xxx/C12
При заходе по ссылке переводим C12 в 4619210, выбираем URL по этому ID, выдаём 302 с Location туда.
Что здесь может занять больше часа?
Понятно, что на практике могут быть дополнительные требования, но задача в исходной формулировке решена.
BTW, хорошее тестовое задание для джуна.
StjarnornasFred
Перевожу: я умею создавать сокращатель ссылок менее чем за час, следовательно, я настолько прошарен и крут, что не могу не похвастаться этим на весь интернет!
dom1n1k
Proof-of-concept - может быть и час, а вот production ready - несколько недель :)