- Expédié
- 7 août 2026 à 05:02 UTC
- Auteur
- Kamo
- Commite
- 21670e5
La passerelle a arrêté les chaînes de requête à double codage dans 3c24d32, mais quatre d'autres proxys de ce service encore concaténés déjà en pourcentage d'octets codés dans une corde et l'a remis à la surcharge de cordes de RestTemplate, qui le traite en tant que modèle URI et encode une deuxième fois: %2C laissé en %252C, l'amont décodé une fois et obtenu le jeton littéral A%2CB. Ce sont tous des surfaces publiques, donc les défaillances sont silencieuses et atterrissent en dehors du société: - /api/public/esigne/- et a Business--statuable-s------------------------------------------------------- Filtre est arrivé à ESigService en un jeton de course. - /api/public/webinar/- même forme, côté MediaService. - /api/social/webhook/token-------------------------------------------------------------- corde. Un jeton de méta-recherche contenant un espace comparé à l'inégalité en aval et MediaService a répondu à 200 vide, de sorte que Meta a laissé tomber l'abonnement; X Crc-token est HMAC'd verbatim, donc un mangled désenregistre le webhook. Sûr pour changer : la signature du foyer x-256 et la signature de X de Meta sont toutes deux HMAC sur le CORB brut (MessagerAdapter:110, InstagramAdapter:114, XAdapter:151), qui est transmise en tant qu'octet non touché. Aucune signature ne couvre l'URL. - /api/public-chat/-: les trois gestionnaires qui appdirent à la mise à la serre(). L'assistante sort de l'APIGatewayController dans UpstreamUri donc quatre classes Partager une branche d'analyse et de retour au lieu de quatre exemplaires. Une URL qui URI.create rejects (espace creux, , tronqués, échappatoires tronqués - formes qui fonctionnent aujourd'hui Seulement PARAIS du deuxième encode) continue de suivre l'ancien chemin de cordes avec un WARN, donc le trafic malformé se comporte exactement comme il l'a fait. La discussion publique avait besoin d'un deuxième point d'entrée plutôt que de celui de la passerelle. Son chemin est Construit à partir de "PathVariables que Spring a déjà DÉCODÉ" alors que sa requête est raw, donc envelopper l'URL concaténée dans URI.create aurait été un régression: un jeton de session arrivant sous forme abc%23xyz décode à abc-xyz, qui URI.create accepte tout en trunquant silencieusement le chemin au niveau du fragment. Le les moitiés sont maintenues à l'écart du site d'appel - le chemin encodé à travers le même site d'appel UriComponentsUuilder call DefaultUriBuilderFactory makes, donc ces octets sont inchangé; la requête laissée seule. Les sept manipulateurs sans requête gardent la corde chemin intact: pas de requête, pas de double encodage à corriger. Délibérément NE PAS changer, et ils doivent rester comme ça - tout encode exactement une fois aujourd'hui, donc "fixer" leur trafic en direct 502: abonnement-catalogue (splice a DÉCODÉ - RequestParam local), abonnement-promotions (littéraux fixes), validation de clé en euros (SHA-256 hex, un point fixe sous URI-COMPONENT), LeadIntakePublicController (variable de chemin UUID décodée, jamais d'appel getQueryString), l'enregistrement VOIP ingérer POST (configiteral, toute entrée dans le corps en plusieurs parties), et CapchaVerificationService (la charge de paiement est dans le corps JSON).