- Expédié
- 3 août 2026 à 03:34 UTC
- Auteur
- kamo
- Commite
- ae85a8a
remotePatterns était le protocole: "https", nom d'hôte: "-" Cela a fait l'image un guide général: n'importe quel appelant pourrait demander à ce serveur de récupérer toute URL, sans vérification de schéma, sans vérification d'adresse, aucune limite de redirection et aucune taille limite, à partir d'une nacelle qui se trouve à côté d'un Redis non authentifié sur 6379, MinIO avec les références racines sur 9000, et CockroachDB sur 26257. Il était antérieur au travail de l'avatar et aurait été de supporter la charge au moment où les images ont commencé à s'écouler à travers elle. L'énumération des hôtes autorisés n'a jamais été la solution. Il s'agit d'une plate-forme en marque blanche chaque locataire a son propre thème. évalué au moment de la construction, de sorte qu'il ne peut pas les connaître. Le nom d'un locataire se briserait des images pour tous les autres. Ainsi, les URL étrangères n'atteignent plus le tout l'optimiteur. safeImageSrc() réécrit tout Source https absolus à /api/images/proxy, qui le récupère derrière le serveur les mêmes contrôles que le fetcher côté Java: DNS épinglé via une recherche personnalisée de sorte que le socket se connecte à une adresse qui a été effectivement vérifiée (fermeture de la reliure fenêtre a naive hostname pré-check feuilles ouvertes), redirects redirects refusés, un streaming Taille de la tête comptée contre les octets reçus plutôt qu'une longueur de contenu une hostilité origine sous-eststates, et une liste de permis de type de contenu donc une page souple de HTML ne jamais rend une image. remotePatterns est maintenant vide à part de localhost. Appliqué à chaque site d'appel portant une image d'origine étrangère et par courrier électronique blocs (URL fournies par l'utilisateur), org et logos logiciels, rencontrez la marque, membre fonds d'écran d'origine et sur les sites bruts de l'entreprise, ce que le CSP d'autre part ont commencé à bloquer. Cela inclut Contact.photoUrl, rendu en sept endroits à partir d'un champ en texte libre n'importe quel utilisateur ayant des droits de contact-créer peuvent définir: le proxyle supprime le pixel de suivi stocké, puisque notre serveur fait le fetch et l'adresse IP du téléspectateur et la synchronisation de lecture n'atteignent jamais l'hôte choisi. Laissés seuls délibérément: sources littérales locales (/img/..., /logo/...). Proxyder cela ajouterait un aller-retour et n'acheterait rien. safeImageSrc ne consulte délibérément pas la fenêtre. Il fonctionne pendant la RSS et à nouveau sur l'hydratation, et le retour d'un chemin nu sur un passage et une URL proxy sur l'autre est un asymétrie d'hydratation sur chaque image de même origine absolue - vaut une valeur redondante dans un cas rare, pour garder les deux passes identiques. Le garde est un jumeau délibéré du Java PublicHostGuard, testé contre le les mêmes contournements - IPv4-mapped, 6to4, NAT64, CGNAT, métadonnées de liaison-local - donc les deux ne peut pas diverger tranquillement.