DocsConvenções e conceitos
Segurança
Como o Nexy mantém sua própria superfície de ataque pequena, quais versões ele requer e como verificar um projeto.
Pisos de versão
Nexy depende de FastAPI, Starlette, Jinja2, Vite e React. Um piso é a versão mais baixa que o Nexy permite; cada um responde a um comunicado publicado.
| Pacote | Piso | Por que |
|---|---|---|
starlette |
1.0.1 | CVE-2026-48710 (BadHost): um cabeçalho Host criado altera o caminho Starlette dos relatórios para o middleware, que ignora a autorização escrita em request.url.path. Listado como explorado pela CISA. |
fastapi |
0,133,0 | a primeira versão que aceita um Starlette fixo |
jinja2 |
3.1.6 | escape da sandbox através do filtro attr (CVE-2025-27516) |
vite (projetos de andaimes) |
6.4.3 | server.fs.deny bypass em caminhos alternativos do Windows (CVE-2026-53571); o desvio de string de consulta anterior (CVE-2026-39364) afeta apenas Vite 7.1-7.3.1 e 8.0.0-8.0.4 |
react, react-dom |
19.2.5 | os avisos de 2026 React dizem respeito aos pacotes react-server-dom-*, que Nexy não usa; o chão mantém a linha remendada |
Verifique suas versões resolvidas:
uv pip list | grep -i -E "starlette|fastapi|jinja2"npm ls vite
Regras que Nexy segue
- Nunca confie no cabeçalho Host para caminhos. Nexy lê
scope["path"], nãorequest.url.path, em seu próprio middleware (middleware de diretório). Faça o mesmo no seu. - Escape do que chega ao HTML. Props passados para componentes do cliente,
Linkatributos,Image,AudioeVideoatributos, âncoras de índice eHTTPExceptiondetalhes são todos escapados de HTML. Um modelo.nexynão escapa por si só: escreva{{ value | e }}para qualquer valor que venha de um visitante ou do banco de dados, e nunca| safena entrada do usuário. - Os endpoints do desenvolvedor são somente loopback e estreitos. O endpoint de renderização de desenvolvimento (
/__nexy__/render) aceita apenas arquivos emsrc/routes/com uma extensão.tsxou.jsxe é acessível apenas por meio do servidor de desenvolvimento, que recusa cabeçalhosHostestrangeiros. - Os detalhes do erro não vazam. Uma página de erro que falha mostra apenas o código de status.
- As respostas de produção carregam cabeçalhos seguros.
X-Content-Type-Options: nosniffeReferrer-Policy: strict-origin-when-cross-origin, a menos que seu código defina o seu próprio. O cabeçalhoServernão é enviado. AdicioneStrict-Transport-Securitye umContent-Security-Policyem seu proxy ou middleware: eles dependem do seu domínio. - Uma falha mostra uma referência, não o erro. Consulte Páginas de erro.
- Nenhum
evale nenhumshell=Trueno código Python do Nexy. Programas externos são executados com uma lista de argumentos.
Executando as auditorias
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
O próprio repositório do Nexy executa a primeira e a terceira em suas verificações. Um novo aviso em um andar acima é tratado elevando o piso em pyproject.toml ou no andaime package.json, e então regenerando a fechadura.
Implantando com segurança
- Defina
useTrustedHostpara seus domínios: ele rejeita cabeçalhosHostinesperados antes de qualquer rota. - Não exponha o servidor de desenvolvimento Vite:
nx devo mantém em loopback atrás da origem Nexy. - Defina
useDocs = Falsese o esquema da API não deve ser público.
Consulte Middleware e segurança.
Fontes
- CVE-2026-48710 (BadHost) em Starlette
- Vite consultivo GHSA-fx2h-pf6j-xcff e GHSA-v2wj-q39q-566r
- Jinja2 CVE-2025-27516
- React pacotes de servidores CVE-2026-44907