Servir un CSP réel par demande nonce avec une dynamique stricte

Featurekamo-marketing
Expédié
20 août 2026 à 05:20 UTC
Auteur
Kamo
Commite
3271922

Élimine les deux résultats élevés restants sur le script-src: le "non-safe-inline" un et "les listes d'hôtes peuvent souvent être contournées". Seul un non-ce avec une "stricte-dynamique" en éclaire, et Next ne peut pas en fournir un sur un une page pré-rendulée - un nonce doit être unique par réponse, donc Next émet un seul pendant le rendu, et une route préreproduite est servie à partir de la cache pleine route sans rendu. Le contournement documenté est de rendre chaque route dynamique, qui détruirait le rendu statique de ce site dépend et s'effondrerait «Lien» pré-extraction à un arbre de route nue. Donc le nonce est appliqué où les octets quittent le processus. serveur-nonce.js commence le serveur autonome sur le bouclage, dessert le port public lui-même, et estampille chacun Réponse HTML sur la voie à suivre. Ensuite, il continue à se prérendre et ne cesse de servir de son propre cache; mesurée à travers l'emballage, /en/pricing encore préfetches 77,521 octets avec 23 références et réponses x-nextjs-cache: HIT. Rendu statique et un vrai nonce tournant, les deux. "strict-dynamique" est ce qui prend sa retraite la liste de réception: les navigateurs ignorent l'hôte les listes de permis sous- elle et de trusts de scripts créés par des scripts déjà concrets. Le widget de chat et le tracker analytique sont injectés par le suivant/script à l'heure d'exécution, donc ils sont fiables de manière transitoire et n'ont pas besoin d'une entrée autorisée du tout. "non-couvrement" et https: restez seulement comme la solution de repli documentée pour les navigateurs trop vieux pour comprendre nonces, qui n'ignorent ni l'un ni l'autre et n'obtenaient rien avant. Trois choses cela a été apparue, dont aucune n'aurait été visible de la Configuration: Le transfert de la demande CSP en amont est un piège. On lit ensuite un nonce à partir de lui et emboutit ses propres scripts - alors ce rendu va dans le cache plein de route avec le nonce cuit, donc chaque visiteur plus tard obtient 96 étiquettes portant un mort nonce. Sous «vircinisation» d'une nonce périmée ne se dégrade pas, il bloque: a page blanche jusqu'à l'expiration de l'entrée. La demande CSP est déshabillée à la place, et tout attribut nonce préexistant est supprimé avant l'estampillage. Réécrire l'hôte en amont pour faire des redirections. Prochaines constructions URL de redirection absolue de l'hôte, donc a répondu Localisation: http://localhost:41337/en. L'hôte est transmis sans modification, et une redirection pointant sur notre propre rebouclage est effondrée vers un chemin d'assurance. La compression a dû bouger. L'orbite est demandée pour que le HTML puisse être Reécrit sans aller-retour décompress/recompresse, et emballage recompresse et brotli où le client le prend, qui est de 30 177 octets contre les 56 324 gzips servis auparavant. scripts/check-csp-nonce.mjs tient le contrat jusqu'à la fin de chaque construction: bottes l'application construite derrière l'emballage et affirme que l'en-tête porte un nonce et "turmante stricte", que TOUTE tag de script porte un nonce, que tous sont Cette réponse est, et qu'elle tourne entre les demandes. Il a attrapé la non-ciel bug lors de sa première course. Un nonce fixe satisferait l'audit tout en étant lisible par n'importe qui, donc le contrôle de rotation est le point plutôt qu'une formalité. Demande de mémoire 128Mi - 256Mi: HTML est tamponné pour être estampillé, donc la mémoire de pointe maintenant des échelles avec des requêtes HTML concurrentes au lieu de s'asseoir à plat.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation