Сначала в телеграм-каналах, а потом и на Хабре появилась информация об утекших данных пользователей с сайта Хабр Карьеры. Считаем нужным дать более развёрнутый комментарий, а также рассказать о том, как устроены настройки приватности на сервисе.
Утечка
Сразу доза успокоительного: каких-либо следов проникновений в базу данных сервиса мы не обнаружили.
Что же тогда произошло? Ни в коем случае не хочется переваливать вину на самих пользователей, но всё же оказавшаяся в «утечке» информация ещё до этого была доступна в сети. Просто кто-то решил её собрать и со стороны сайта этому очень непросто противостоять.
Поэтому мы решили проинформировать наших текущих и будущих пользователей, как на Хабр Карьере устроена приватность. Чтобы, во-первых, всем было понятно, о парсинге какой именно информации идёт речь. А, во-вторых, чтобы, зная это, каждый более сознательно управлял своей приватностью в сети.
На сервисе есть две основные настройки приватности: для всего профиля в целом и для контактной информации.
Пользователь может выбрать, кому показывать свой профиль:
Контакты пользователя — часть его профиля, и для них есть дополнительные настройки приватности. Пользователь может выбрать, кому показывать свою контактную информацию:
Для настройки приватности контактов мы в своё время намеренно убрали настройку «Всем, в том числе гостям и роботам», чтобы контактная информация не индексировалась поисковиками. Ведь если пос��еднее происходит, то пользователь не может быстро убрать свои контактные данные из сети. Он их скрывает на Карьере, но они всё равно ещё довольно долго остаются висеть в индексах поисковиков.
Также пользователь не может поставить контактной информации более мягкие условия приватности, чем он это сделал для своего профиля в целом. Например, если у профиля стоит приватность «Друзьям и кураторам», то у контактов уже нельзя поставить настройку «Только авторизованным».

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

На текущий момент у нас следующая статистика по приватности пользователей:
Приватность профилей:
Приватность контактов:
Как видно, 10% пользователей предпочитают после регистрации выбирать более жёсткие настройки приватности своих профилей в целом, а 25% — более мягкие настройки приватности своих контактных данных.
Таким образом, любой пользователь, залогинившийся на сайте, может просматривать (и сохранять) профили почти всех пользователей и контактную информацию четверти пользователей. Что, собственно, и произошло.
До содержимого архива, выложенного на одном из форумов, мы так и не добрались. Но, судя по предоставленной сопроводительной информации, там представлена как раз информация, доступная в профилях пользователей другим зарегистрированным пользователям сервиса. У нас есть закрытый API для работы со своими вакансиями и откликами на сторонних площадках, но данные из выложенного архива не из этого API — просто бот ходил по страницам, парсил их и складывал в файлик. Судя по числу записей эта база собиралась в течение долгого времени (чтобы не привлекать внимания).
Конкретный пример:

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

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

Тем не менее мы всё же проконсультировались с несколькими людьми, которые занимаются этим не в качестве хобби, а в промышленных масштабах. Максим makasin4ik из xmldatafeed.com рассказал, что сейчас парсят всё и вся, но вместе мы придумали несколько нюансов, которые будут доработаны. Вот некоторые из них:
Очень бы не хотелось, чтобы наши сервисы подвергались реальным техническим угрозам, поэтому в скором времени также планируем запустить bounty-программу. А пока, если вы нашли уязвимость, сообщите нам в форму обратной связи — найдём общий язык и всё исправим.
Спасибо за внимание!
TL;DR
Утечки не было, но информацию спарсили

Сразу доза успокоительного: каких-либо следов проникновений в базу данных сервиса мы не обнаружили.
Что же тогда произошло? Ни в коем случае не хочется переваливать вину на самих пользователей, но всё же оказавшаяся в «утечке» информация ещё до этого была доступна в сети. Просто кто-то решил её собрать и со стороны сайта этому очень непросто противостоять.
Поэтому мы решили проинформировать наших текущих и будущих пользователей, как на Хабр Карьере устроена приватность. Чтобы, во-первых, всем было понятно, о парсинге какой именно информации идёт речь. А, во-вторых, чтобы, зная это, каждый более сознательно управлял своей приватностью в сети.
Как устроена приватность на Хабр Карьере
На сервисе есть две основные настройки приватности: для всего профиля в целом и для контактной информации.
Пользователь может выбрать, кому показывать свой профиль:
- Всем, в том числе гостям и роботам (значение по умолчанию при регистрации)
- Только авторизованным пользователям
- Друзьям и кураторам вакансий с моим откликом
- Никому не показывать
Контакты пользователя — часть его профиля, и для них есть дополнительные настройки приватности. Пользователь может выбрать, кому показывать свою контактную информацию:
- Только авторизованным пользователям
- Друзьям и кураторам вакансий с моим откликом (значение по умолчанию при регистрации)
- Никому не показывать
Для настройки приватности контактов мы в своё время намеренно убрали настройку «Всем, в том числе гостям и роботам», чтобы контактная информация не индексировалась поисковиками. Ведь если пос��еднее происходит, то пользователь не может быстро убрать свои контактные данные из сети. Он их скрывает на Карьере, но они всё равно ещё довольно долго остаются висеть в индексах поисковиков.
Также пользователь не может поставить контактной информации более мягкие условия приватности, чем он это сделал для своего профиля в целом. Например, если у профиля стоит приватность «Друзьям и кураторам», то у контактов уже нельзя поставить настройку «Только авторизованным».

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

На текущий момент у нас следующая статистика по приватности пользователей:
Приватность профилей:
- 90% видны всем (значение по умолчанию при регистрации)
- 6% видны авторизованным
- 1% видны друзьям и кураторам вакансий с откликом
- 3% скрыты ото всех
Приватность контактов:
- 25% видны авторизованным
- 75% видны друзьям и кураторам вакансий с откликом (значение по умолчанию при регистрации)
- < 1% скрыты ото всех
Как видно, 10% пользователей предпочитают после регистрации выбирать более жёсткие настройки приватности своих профилей в целом, а 25% — более мягкие настройки приватности своих контактных данных.
Таким образом, любой пользователь, залогинившийся на сайте, может просматривать (и сохранять) профили почти всех пользователей и контактную информацию четверти пользователей. Что, собственно, и произошло.
Что в архиве
До содержимого архива, выложенного на одном из форумов, мы так и не добрались. Но, судя по предоставленной сопроводительной информации, там представлена как раз информация, доступная в профилях пользователей другим зарегистрированным пользователям сервиса. У нас есть закрытый API для работы со своими вакансиями и откликами на сторонних площадках, но данные из выложенного архива не из этого API — просто бот ходил по страницам, парсил их и складывал в файлик. Судя по числу записей эта база собиралась в течение долгого времени (чтобы не привлекать внимания).
Конкретный пример:

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

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

Тем не менее мы всё же проконсультировались с несколькими людьми, которые занимаются этим не в качестве хобби, а в промышленных масштабах. Максим makasin4ik из xmldatafeed.com рассказал, что сейчас парсят всё и вся, но вместе мы придумали несколько нюансов, которые будут доработаны. Вот некоторые из них:
- Лимит на количество запросов под авторизованным пользователем. На том же HH.ru такой лимит сейчас составляет 500 анкет в сутки, у нас он будет меньше.
- Совет из разряда «Не можешь победить — возглавь»: предоставление платного API для легального парсинга базы.
- Дополнительно регулярно информировать тех пользователей, которые указали о себе много публичной контактной информации.
Очень бы не хотелось, чтобы наши сервисы подвергались реальным техническим угрозам, поэтому в скором времени также планируем запустить bounty-программу. А пока, если вы нашли уязвимость, сообщите нам в форму обратной связи — найдём общий язык и всё исправим.
Спасибо за внимание!
