Аудит зависимостей — регулярная проверка пакетов на наличие известных уязвимостей. timeago.js имеет нулевые или минимальные зависимости, что снижает атакуемую поверхность, но периодическая проверка остаётся необходимой.
# Проверить текущие уязвимости
npm audit
# Только критические
npm audit --audit-level=critical
# Только высокие и выше
npm audit --audit-level=high
# JSON вывод для CI
npm audit --json > audit-report.json
found 0 vulnerabilities
Для timeago.js это типичный результат — библиотека без зависимостей имеет минимальную атакуемую поверхность.
# Посмотреть информацию о пакете
npm show timeago.js
# Проверить уязвимости через npm registry API
curl https://registry.npmjs.org/-/npm/v1/security/advisories/bulk \
-H "Content-Type: application/json" \
-d '{"timeago.js": ["4.0.0"]}'
npm install -g snyk
snyk test
snyk monitor # Непрерывный мониторинг
Snyk предоставляет более детальные отчёты и показывает уязвимости в транзитивных зависимостях.
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
labels:
- "dependencies"
ignore:
# Игнорировать мажорные обновления (требуют ручной проверки)
- dependency-name: "*"
update-types: ["version-update:semver-major"]
Dependabot автоматически создаёт PR при обнаружении уязвимостей.
# Убедиться, что установленный пакет совпадает с registry
npm pack timeago.js --dry-run
# Проверить hash пакета
cat package-lock.json | grep -A3 '"timeago.js"'
package-lock.json содержит integrity поле —
SHA512 хеш пакета:
"timeago.js": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz",
"integrity": "sha512-...",
"dev": false
}
# .github/workflows/security.yml
name: Security Audit
on:
push:
branches: [main]
schedule:
- cron: '0 9 * * 1' # Каждый понедельник в 9:00
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm ci
- run: npm audit --audit-level=high
timeago.js распространяется под лицензией MIT — совместима с большинством коммерческих и open-source проектов:
# Проверить лицензию
npm show timeago.js license
# MIT
# Аудит лицензий всех зависимостей
npx license-checker --summary
Всегда использовать package-lock.json или
yarn.lock:
# Установить точно по lock-файлу
npm ci # Вместо npm install
# Проверить, что lock-файл актуален
npm install --package-lock-only
git diff package-lock.json
Не использовать npm install в CI — он может обновить
транзитивные зависимости.
# Скачать и проверить пакет без установки
npm pack timeago.js
tar -tzf timeago.js-4.0.2.tgz # Список файлов
tar -xzf timeago.js-4.0.2.tgz # Распаковать для проверки
npm install timeago.js@latest.