Skip to content

CSP: script-src baseado em nonce (remover 'unsafe-inline'/'unsafe-eval') #78

Description

@deco-cms

Follow-up de #76.

O #76 subiu uma CSP enforcing com hardening real (default-src 'self', object-src 'none', base-uri 'self', form-action, frame-ancestors), mas manteve 'unsafe-inline' e 'unsafe-eval' em script-src. Com isso a política não mitiga XSS refletido/armazenado: um script inline injetado ainda executa, e a allowlist de hosts pouco acrescenta.

Motivo: o payload de hidratação do TanStack Start é inline. Endurecer exige plumbar um nonce por request através do stream de SSR (@decocms/tanstack / @tanstack/react-start/server-entry) e aplicá-lo tanto nas tags de script emitidas quanto no header.

Escopo:

  • gerar nonce por request no worker entry;
  • injetar nas tags de script do SSR (inclui snippets inline do deco/Shopify);
  • trocar script-src 'self' 'unsafe-inline' 'unsafe-eval' ... por script-src 'self' 'nonce-<v>' 'strict-dynamic';
  • remover 'unsafe-eval' (verificar se algo em dev/runtime depende disso);
  • validar em preview antes do merge.

Até isso ser feito, a finding de CSP do diagnóstico está apenas parcialmente endereçada.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions