ДокументацияСоглашения и концепции

Безопасность

Как Nexy сохраняет небольшую поверхность атаки, какие версии ему требуются и как проверять проект.

Полы версии

Nexy зависит от FastAPI, Starlette, Jinja2, Vite и React. Пол — это самая низкая версия, которую допускает Nexy; каждый отвечает на опубликованную рекомендацию.

Пакет Этаж Почему
starlette 1.0.1 CVE-2026-48710 (BadHost): созданный заголовок Host изменяет путь, по которому Starlette сообщается промежуточному программному обеспечению, что обходит авторизацию, написанную на request.url.path. Внесен в список эксплуатируемых CISA.
fastapi 0.133.0 первый выпуск, который принимает фиксированное Starlette
jinja2 3.1.6 выход из песочницы через фильтр attr (CVE-2025-27516)
vite (проекты строительных лесов) 6.4.3 server.fs.deny обход альтернативных путей Windows (CVE-2026-53571); более ранний обход строки запроса (CVE-2026-39364) влияет только на Vite 7.1-7.3.1 и 8.0.0-8.0.4
react, react-dom 19.2.5 рекомендации React 2026 года касаются пакетов react-server-dom-*, которые Nexy не использует; пол держит линию исправленной

Проверьте решенные версии:

uv pip list | grep -i -E "starlette|fastapi|jinja2"npm ls vite

Правила, которым следует Nexy

  • Никогда не доверяйте заголовку Host для путей. Nexy читает scope["path"], а не request.url.path в своем собственном промежуточном программном обеспечении (промежуточном программном обеспечении каталога). Сделайте то же самое в своем.
  • Экранируйте то, что достигает HTML. Свойства, передаваемые клиентским компонентам, атрибуты Link, атрибуты Image, Audio и Video, привязки таблицы содержания и детали HTTPException экранируются HTML. Шаблон .nexy не экранируется сам по себе: записывайте {{ value | e }} для любого значения, поступающего от посетителя или базы данных, и никогда не записывайте | safe для ввода пользователя.
  • Конечные точки разработчика являются узкими и предназначены только для обратной связи. Конечная точка рендеринга разработчика (/__nexy__/render) принимает только файлы под именем src/routes/ с расширением .tsx или .jsx и доступна только через сервер разработки, который отклоняет внешние заголовки Host.
  • Подробности об ошибке не разглашаются. Страница ошибки, которая сама по себе терпит неудачу, отображает только код состояния.
  • Производственные ответы содержат безопасные заголовки. X-Content-Type-Options: nosniff и Referrer-Policy: strict-origin-when-cross-origin, если ваш код не устанавливает свои собственные. Заголовок Server не отправляется. Добавьте Strict-Transport-Security и Content-Security-Policy в свой прокси-сервер или промежуточное программное обеспечение: они зависят от вашего домена.
  • При сбое отображается ссылка, а не ошибка. См. Страницы ошибок.
  • В коде Nexy Python нет eval и shell=True. Внешние программы запускаются со списком аргументов.

Проведение аудитов

python scripts/audit_dependencies.py        # Python dependencies against the locknpm audit                                    # in a scaffolded projectuv run bandit -r nexy -c .bandit             # static analysis of Nexy itself

Собственный репозиторий Nexy в своих проверках запускает первый и третий. Новая рекомендация этажом выше обрабатывается поднятием пола в pyproject.toml или в лесах package.json и последующей регенерацией замка.

Безопасное развертывание

  • Установите useTrustedHost для своих доменов: он отклоняет неожиданные заголовки Host перед любым маршрутом.
  • Не раскрывайте сервер разработки Vite: nx dev сохраняет его в режиме обратной связи за источником Nexy.
  • Установите useDocs = False, если схема API не должна быть общедоступной.

См. Промежуточное ПО и безопасность.

Источники

Следующие шаги

Изменить на GitHub

Enter открывает результат, Esc закрывает.