Защита личной информации в блогах

В этой статье рассматриваются практические методы и лучшие практики по защите личной приватности при ведении блога и предотвращению утечки конфиденциальной информации.

Популярной платформой для бесплатного и открытого хостинга является GitHub Pages, который используется многими блогами для публикации.
Однако бесплатная версия требует открытого репозитория для публичного доступа. После публикации репозитория черновые статьи также могут быть доступны через Git.
Хотя опубликованные статьи редко содержат конфиденциальную информацию, исходный репозиторий открытого блога может привести к утечке личных данных. Ниже приведены распространённые ключевые слова, связанные с утечкой информации. Дополнения приветствуются в комментариях.

Чувствительные слова

Китайские ключевые словаАнглийские ключевые слова
密码 (пароль)password
账号 (учётная запись)account
身份证 (удостоверение личности)id
银行卡 (банковская карта)card
支付宝 (Alipay)alipay
微信 (WeChat)wechat
手机号 (номер телефона)phone
家庭住址 (домашний адрес)address
工作单位 (рабочее место)company
社保卡 (карта соцстрахования)card
驾驶证 (водительские права)driver
护照 (паспорт)passport
信用卡 (кредитная карта)credit
密钥 (ключ)key
配置文件 (файл конфигурации)ini
凭证 (учётные данные)credential
用户名 (имя пользователя)username

Регулярное выражение для поиска:

(密码|账号|身份证|银行卡|支付宝|微信|手机号|家庭住址|工作单位|社保卡|驾驶证|护照|信用卡|username|password|passwd|account|key\s*:|\.ini|credential|card|bank|alipay|wechat|passport|id\s*:|phone|address|company)

Если вы используете VSCode в качестве редактора блога, можно быстро выполнить полный поиск по сайту с помощью регулярных выражений, чтобы проверить потенциально уязвимые места.

История Git

История Git может содержать утечку информации. Простой скрипт может просканировать историю открытого блога.

Для собственного репозитория можно очистить историю следующим образом. Если необходимо сохранить историю, не выполняйте очистку.

Убедитесь, что вы понимаете значение команды. Она удаляет историю. Будьте осторожны и создайте резервную копию важных данных перед выполнением.

git reset --soft ${first-commit}
git push --force

Другие способы сканирования репозитория

https://github.com/trufflesecurity/trufflehog

  • Поиск, проверка и анализ утечек учётных данных
  • 17.2k звёзд
  • 1.7k форков

img

Другие способы публикации блога

  • Github Pro позволяет публиковать приватные репозитории на Pages, стоимость 4 доллара в месяц
  • Установка репозитория как приватного и публикация на Cloudflare Pages
  • Разделение репозиториев: один приватный для редактирования статей, один публичный для готовых статей

Если ваш блог использует систему комментариев, такую как giscus, зависящую от GitHub, вам всё равно понадобится публичный репозиторий.

Хорошие привычки vs Надёжные механизмы

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

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

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

Большинство людей понимают, что такое хорошая привычка, поэтому здесь не обсуждаются хорошие привычки, а основное внимание уделяется тому, как избежать утечки личной информации с помощью механизмов.

Прежде всего — разделение репозиториев: рукописи и публикации хранятся отдельно. Все статьи, опубликованные на Github Pages, прошли проверку и не содержат черновиков с меткой draft.

Также можно использовать Github Actions, чтобы при каждом коммите сканировать чувствительную информацию. Если обнаружена чувствительная информация, коммит не разрешается. См. trufflehog

Регулярное выражение, представленное в этой статье, — это лишь простой пример, не интегрированный ни в один процесс. Вы можете адаптировать его под свои потребности и интегрировать в рабочий процесс.

Ссылки