feat(security): CSP ganha script-src (auditoria: CSP ainda sem script-src)
'self' 'unsafe-inline' https://cdn.jsdelivr.net — levantamento antes de mexer: só um host externo carrega <script> a sério (jsdelivr, o html2canvas de views/admin/horario/instagram.php e o bootstrap-icons da página de erro); tudo o resto (Bootstrap, jQuery, Summernote) já é vendorizado desde a migração de 25/09. 'unsafe-inline' fica por sítio ter vários <script> inline (tema claro/escuro, GA-like snippets) que não valia a pena reescrever para nonce/hash nesta passagem — mas isto já bloqueia o caso que mais importa: um <script src="outro-domínio"> injetado por uma falha de XSS deixa de carregar. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7482dc98f2
commit
231b8eb699
1 file changed
+7
-4
@@ -26,15 +26,18 @@ RewriteRule "^shared/platform-tools/[^/]+\.php$" - [F,L]
|
||||
RewriteRule "\.md$" - [F,L]
|
||||
|
||||
# ── Headers de segurança ─────────────────────────────────────────────────────
|
||||
# A CSP não restringe scripts ainda (o site tem scripts inline e incorporações
|
||||
# da Google); fecha o que não parte nada: quem pode meter o site num iframe,
|
||||
# <base>, plugins e para onde os formulários podem enviar.
|
||||
# script-src: 'self' (todo o JS próprio, incl. Bootstrap/jQuery/Summernote
|
||||
# vendorizados desde 25/09) + 'unsafe-inline' (o site tem vários <script>
|
||||
# inline — remover isso é reescrever cada um para nonce/hash, não cabe aqui)
|
||||
# + cdn.jsdelivr.net (html2canvas em views/admin/horario/instagram.php,
|
||||
# bootstrap-icons na página de erro). Já bloqueia o que importa: um
|
||||
# <script src="https://outro-dominio/..."> injetado não carrega.
|
||||
<IfModule mod_headers.c>
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
||||
Header always set X-Frame-Options "SAMEORIGIN"
|
||||
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()"
|
||||
Header always set Content-Security-Policy "frame-ancestors 'self'; base-uri 'self'; object-src 'none'; form-action 'self' https://forms.zohopublic.eu"
|
||||
Header always set Content-Security-Policy "frame-ancestors 'self'; base-uri 'self'; object-src 'none'; form-action 'self' https://forms.zohopublic.eu; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net"
|
||||
</IfModule>
|
||||
|
||||
# ── Canonical host: force HTTPS + strip www ───────────────────────────────────
|
||||
|
||||
Reference in new issue
Block a user