Как снижаем риски взлома через npm-зависимости в RSS-читалке.
1. Все зависимости ставим только для тестов. Но всё равно вызывает pnpm install --ignore-scripts чтобы исключить атаку через postinstall-скрипт.
https://github.com/hplush/slowreader/blob/main/.github/workflows/proxy.yml#L18-L31
2. Сборка сервера идёт в отдельной задаче, где ставим уже только production зависимости и только зависимости проекта сервера (а не все из монорепо).
Меньше зависимостей — меньше риска.
https://github.com/hplush/slowreader/blob/main/.github/workflows/proxy.yml#L32-L57
3. Сервер собираем в один JS-файл с помощью esbuild, чтобы вырезать ненужные файлы из зависимостей.
https://github.com/hplush/slowreader/blob/main/proxy/package.json#L8
Этот статичный собранный файл через артифакты передаём в другую задачу.
4. Шаг деплоя, единственный у кого есть доступ к серверам, вообще никаких зависимостей не ставит.
Он лишь достаёт статичный JS-файл сервера, собирает докер-образ и заливает его на Google Cloud Run.
https://github.com/hplush/slowreader/blob/main/.github/workflows/proxy.yml#L58-L114
3. Сервер собираем в один JS-файл с помощью esbuild, чтобы вырезать ненужные файлы из зависимостей.
https://github.com/hplush/slowreader/blob/main/proxy/package.json#L8
Этот статичный собранный файл через артифакты передаём в другую задачу.
4. Шаг деплоя, единственный у кого есть доступ к серверам, вообще никаких зависимостей не ставит.