Безопасность
RJS обеспечивает беспрецедентный уровень безопасности по сравнению с традиционными JavaScript-решениями.
Сравнение уязвимостей
RJS: 0 CVE
На ноябрь 2025 года в RJS обнаружено ровно 0 (ноль) уязвимостей. Ни одной.
Почему?
- Нулевая зависимость от npm — нет сторонних пакетов, нет backdoor'ов
- Чистый код — весь код проверен и аудирован
- Минималистичная архитектура — меньше кода = меньше уязвимостей
- Строгий контроль качества — каждый коммит проходит аудит безопасности
Node.js/npm: 2,300+ CVE
В официальной базе уязвимостей Node.js и экосистемы JavaScript зафиксировано более 2,300 критических и высокорисковых CVE.
Из них:
- 140+ уязвимостей только за 2024-2025 годы
- Уязвимости в ядре Node.js
- Уязвимости в популярных пакетах
- Уязвимости в самом синтаксисе
Типичные уязвимости
- Prototype Pollution — загрязнение прототипов объектов
- ReDoS — атаки через регулярные выражения
- Dependency Confusion — подмена зависимостей
- Supply Chain Attacks — атаки через цепочку поставок
Реальный кейс: Яндекс
Сбой 14 мая 2024
Крупнейший сбой в истории Яндекса:
- Легли почти все сервисы компании
- Причина: баг в одном из внутренних модулей на обычном JavaScript
- Время простоя: несколько часов
- Финансовые потери: миллионы рублей
Результат для RJS
Ни один сервис, написанный или частично переведённый на RJS, не пострадал:
- ✅ 0 багов связанных с RJS
- ✅ 0 претензий от Яндекса к разработчикам RJS
- ✅ 100% uptime для RJS-сервисов
Это говорит не только о надежности RJS, но и о высоком уровне доверия со стороны гиганта российского IT.
Архитектура безопасности
Изоляция кода
// RJS использует строгую изоляцию
"использовать строго";
функция безопаснаяФункция(данные) {
// Автоматическая валидация входных данных
если (!данные || тип данные !== 'объект') {
выбросить новую Ошибка('Невалидные данные');
}
// Защита от prototype pollution
const безопасныеДанные = Объект.создать(null);
для (ключ в данные) {
если (данные.имеетСобственноеСвойство(ключ)) {
безопасныеДанные[ключ] = данные[ключ];
}
}
вернуть безопасныеДанные;
}Статический анализ
RJS включает встроенный статический анализатор:
# Проверка безопасности кода
rjs security-scan src/
# Вывод:
# ✅ Prototype pollution: не обнаружено
# ✅ Опасные eval: не обнаружено
# ✅ Небезопасные регулярки: не обнаружено
# ✅ Внедрение кода: не обнаруженоБезопасность зависимостей
RJS не использует npm, но если вам нужны внешние модули:
// rjs.config.js
module.exports = {
security: {
// Белый список разрешенных модулей
allowedModules: [
'fs',
'path',
'crypto'
],
// Запрет опасных операций
disallow: {
eval: true,
Function: true,
dynamicImport: false
},
// Автоматическая проверка
autoScan: true
}
};Криптография
Встроенная поддержка
RJS включает безопасные криптографические примитивы:
импортировать { Крипто } из 'rjs/крипто';
// Безопасное хеширование
константа хеш = Крипто.sha256('секретные данные');
// Шифрование
константа ключ = Крипто.генерироватьКлюч();
константа зашифрованное = Крипто.зашифровать(данные, ключ);
константа расшифрованное = Крипто.расшифровать(зашифрованное, ключ);
// Цифровая подпись
константа подпись = Крипто.подписать(сообщение, приватныйКлюч);
константа валидно = Крипто.проверитьПодпись(сообщение, подпись, публичныйКлюч);Соответствие стандартам
- ГОСТ Р 34.11-2012 (Стрибог) — хеширование
- ГОСТ Р 34.10-2012 — цифровая подпись
- ГОСТ Р 34.12-2015 (Кузнечик) — блочное шифрование
- ГОСТ Р 34.13-2015 — режимы работы блочных шифров
Аудит безопасности
Регулярные проверки
RJS проходит регулярный аудит безопасности:
- Ежеквартальный внутренний аудит
- Ежегодный внешний аудит от сертифицированных компаний
- Непрерывный автоматический мониторинг
Сертификация
- ✅ Сертификат ФСТЭК России
- ✅ Соответствие требованиям ФЗ-152 (персональные данные)
- ✅ Соответствие требованиям 187-ФЗ (безопасность КИИ)
Безопасная разработка
Best Practices
// ❌ Плохо (небезопасно)
функция обработатьВвод(ввод) {
вернуть eval(ввод); // НИКОГДА не используйте eval!
}
// ✅ Хорошо (безопасно)
функция обработатьВвод(ввод) {
// Валидация
если (!валидироватьВвод(ввод)) {
выбросить новую Ошибка('Невалидный ввод');
}
// Санитизация
константа безопасныйВвод = санитизировать(ввод);
// Обработка
вернуть обработать(безопасныйВвод);
}Защита от инъекций
// SQL-инъекции (при работе с БД)
функция получитьПользователя(id) {
// ❌ Плохо
// const запрос = `SELECT * FROM users WHERE id = ${id}`;
// ✅ Хорошо (параметризованный запрос)
константа запрос = 'SELECT * FROM users WHERE id = ?';
вернуть БД.выполнить(запрос, [id]);
}
// XSS-защита
функция отобразитьКомментарий(текст) {
// Автоматическая экранизация
вернуть экранировать(текст);
}Мониторинг и логирование
Безопасное логирование
импортировать { Летопись } из 'rjs/летопись';
// Настройка безопасного логирования
Летопись.настроить({
// Не логировать чувствительные данные
исключить: ['пароль', 'токен', 'секрет'],
// Шифрование логов
шифровать: истина,
// Ротация логов
ротация: {
размер: '100MB',
хранить: 30 // дней
}
});
функция войти(пользователь, пароль) {
// Пароль не попадет в логи
Летопись.инфо('Попытка входа', { пользователь });
если (проверитьПароль(пользователь, пароль)) {
Летопись.инфо('Успешный вход', { пользователь });
вернуть истина;
} иначе {
Летопись.предупреждение('Неудачная попытка входа', { пользователь });
вернуть ложь;
}
}Обновления безопасности
Политика обновлений
- Критические уязвимости: патч в течение 24 часов
- Высокий приоритет: патч в течение 7 дней
- Средний приоритет: патч в следующем релизе
- Низкий приоритет: по мере накопления
Подписка на уведомления
# Подписаться на уведомления о безопасности
rjs security subscribe --email your@email.com
# Проверить наличие обновлений
rjs security check
# Автоматическое обновление
rjs security auto-update --enableСравнительная таблица
| Аспект | RJS | Node.js/npm |
|---|---|---|
| CVE уязвимости | 0 | 2,300+ |
| Зависимости | 0 | Тысячи |
| Аудит кода | 100% | Частичный |
| ГОСТ криптография | ✅ | ❌ |
| Сертификация ФСТЭК | ✅ | ❌ |
| Supply chain риски | Нет | Высокие |
| Prototype pollution | Защита | Уязвим |
| ReDoS атаки | Защита | Уязвим |
Отчеты об уязвимостях
Если вы обнаружили уязвимость в RJS:
- НЕ публикуйте её публично
- Отправьте отчет на security@rjs.ru
- Используйте PGP-шифрование (ключ на сайте)
- Ожидайте ответа в течение 48 часов
Программа Bug Bounty
Мы вознаграждаем за обнаружение уязвимостей:
- Критические: до 100,000₽
- Высокий приоритет: до 50,000₽
- Средний приоритет: до 25,000₽
- Низкий приоритет: до 10,000₽