Сначала в телеграм-каналах, а потом и на Хабре появилась информация об утекших данных пользователей с сайта Хабр Карьеры. Считаем нужным дать более развёрнутый комментарий, а также рассказать о том, как устроены настройки приватности на сервисе.

TL;DR
Утечки не было, но информацию спарсили

Утечка

Сразу доза успокоительного: каких-либо следов проникновений в базу данных сервиса мы не обнаружили. 

Что же тогда произошло? Ни в коем случае не хочется переваливать вину на самих пользователей, но всё же оказавшаяся в «утечке» информация ещё до этого была доступна в сети. Просто кто-то решил её собрать и со стороны сайта этому очень непросто противостоять.

Поэтому мы решили проинформировать наших текущих и будущих пользователей, как на Хабр Карьере устроена приватность. Чтобы, во-первых, всем было понятно, о парсинге какой именно информации идёт речь. А, во-вторых, чтобы, зная это, каждый более сознательно управлял своей приватностью в сети.

Как устроена приватность на Хабр Карьере


На сервисе есть две основные настройки приватности: для всего профиля в целом и для контактной информации. 

Пользователь может выбрать, кому показывать свой профиль:

  • Всем, в том числе гостям и роботам (значение по умолчанию при регистрации)
  • Только авторизованным пользователям
  • Друзьям и кураторам вакансий с моим откликом
  • Никому не показывать

Контакты пользователя — часть его профиля, и для них есть дополнительные настройки приватности. Пользователь может выбрать, кому показывать свою контактную информацию:

  • Только авторизованным пользователям
  • Друзьям и кураторам вакансий с моим откликом (значение по умолчанию при регистрации)
  • Никому не показывать

Для настройки приватности контактов мы в своё время намеренно убрали настройку «Всем, в том числе гостям и роботам», чтобы контактная информация не индексировалась поисковиками. Ведь если пос��еднее происходит, то пользователь не может быстро убрать свои контактные данные из сети. Он их скрывает на Карьере, но они всё равно ещё довольно долго остаются висеть в индексах поисковиков.

Также пользователь не может поставить контактной информации более мягкие условия приватности, чем он это сделал для своего профиля в целом. Например, если у профиля стоит приватность «Друзьям и кураторам», то у контактов уже нельзя поставить настройку «Только авторизованным».


Пользователь видит, какие настройки приватности профиля и контактов у него стоят, в левой колонке на главной своего профиля. Текст с описанием каждой настройки кликабельный — ссылка отправляет пользователя на страницу, где можно поменять соответствующую настройку.


На текущий момент у нас следующая статистика по приватности пользователей:

Приватность профилей:

  • 90% видны всем (значение по умолчанию при регистрации)
  • 6% видны авторизованным
  • 1% видны друзьям и кураторам вакансий с откликом
  • 3% скрыты ото всех

Приватность контактов:

  • 25% видны авторизованным
  • 75% видны друзьям и кураторам вакансий с откликом (значение по умолчанию при регистрации)
  • < 1% скрыты ото всех

Как видно, 10% пользователей предпочитают после регистрации выбирать более жёсткие настройки приватности своих профилей в целом, а 25% — более мягкие настройки приватности своих контактных данных.

Таким образом, любой пользователь, залогинившийся на сайте, может просматривать (и сохранять) профили почти всех пользователей и контактную информацию четверти пользователей. Что, собственно, и произошло.

Что в архиве


До содержимого архива, выложенного на одном из форумов, мы так и не добрались. Но, судя по предоставленной сопроводительной информации, там представлена как раз информация, доступная в профилях пользователей другим зарегистрированным пользователям сервиса. У нас есть закрытый API для работы со своими вакансиями и откликами на сторонних площадках, но данные из выложенного архива не из этого API — просто бот ходил по страницам, парсил их и складывал в файлик. Судя по числу записей эта база собиралась в течение долгого времени (чтобы не привлекать внимания).

Конкретный пример:


И вот эта анкета на сайте:


Что мы предпримем


Изначально было понятно, что защититься от парсинга технически очень сложно (а порой — просто нецелесообразно). Статьи на Хабре это только подтверждали:


Тем не менее мы всё же проконсультировались с несколькими людьми, которые занимаются этим не в качестве хобби, а в промышленных масштабах. Максим makasin4ik из xmldatafeed.com рассказал, что сейчас парсят всё и вся, но вместе мы придумали несколько нюансов, которые будут доработаны. Вот некоторые из них:

  • Лимит на количество запросов под авторизованным пользователем. На том же HH.ru такой лимит сейчас составляет 500 анкет в сутки, у нас он будет меньше.
  • Совет из разряда «Не можешь победить — возглавь»: предоставление платного API для легального парсинга базы. 
  • Дополнительно регулярно информировать тех пользователей, которые указали о себе много публичной контактной информации.



Очень бы не хотелось, чтобы наши сервисы подвергались реальным техническим угрозам, поэтому в скором времени также планируем запустить bounty-программу. А пока, если вы нашли уязвимость, сообщите нам в форму обратной связи — найдём общий язык и всё исправим. 

Спасибо за внимание!