Inoltra i byte di query del chiamante sui proxy pubblici

FixAPIService
Spegnimento
7 agosto 2026 alle ore 05:02 UTC
Autore
Kamo
Impegno
21670e5

Il gateway ha interrotto le stringhe di query a doppia codifica in avanti in 3c24d32, ma quattro altri proxy in questo servizio ancora concatenati byte già codificate per cento in uno String e consegnato a RestTemplate's String overload, che lo tratta come modello URI e lo codifica una seconda volta: %2C lasciato %252C, il upstream decodificato una volta e ottenuto il token letterale A%2CB. Queste sono tutte le superfici pubbliche, quindi i fallimenti sono silenziosi e sbarcano fuori dalle azienda: - /api/public/esign/** — lo stato del cliente di Business-plan=SENT%2CCOMPLETED filtro è arrivato a ESigService come un gettone run-together. - /api/public/webinar/** — stessa forma, lato MediaService. - /api/social/webhook/{token} — la stretta di mano di verifica GET è la query stringa. Un token di verifica Meta contenente uno spazio confrontato a valle e MediaService ha risposto 200-vuoto, quindi Meta ha lasciato l'abbonamento; X's crc token è HMAC'd verbatim, quindi un mangled uno deregisters il webhook. Sicuro per cambiare: la firma di Meta x-hub-signature-256 e X sono entrambi HMAC over the raw BODY (MessengerAdapter:110, InstagramAdapter:114, XAdapter:151), che è trasmesso come un byte intatto[]. Nessuna firma copre l'URL. - /api/public-chat/** — i tre handlers che appendiscono ottenereQueryString(). L'aiutante si sposta da APIGatewayController in UpstreamUri così quattro classi condividere un ramo parse-and-fall-back invece di quattro copie. Un URL che URI.create rifiuta (spazio basso, |, {}, fuga troncata — forme che funzionano oggi solo BECAUSE del secondo encode) va ancora giù il vecchio sentiero String con un ATTENZIONE, così il traffico malformato si comporta esattamente come ha fatto. La chat pubblica aveva bisogno di un secondo punto di entrata piuttosto che del gateway. Il suo cammino è costruito da @PathVariables che la primavera ha già DECODED mentre la sua query è crudo, quindi avvolgere l'URL concatenato in URI. creare sarebbe stato regressione: un token di sessione che arriva come abc%23xyz decodes ad abc#xyz, che URI.create accetta mentre frena silenziosamente il percorso al frammento. The le metà sono tenute separate dal sito di chiamata — il percorso codificato attraverso lo stesso UriComponentsBuilder chiamata DefaultUriBuilderFactory fa, così quelle byte sono invariato; la query lasciata sola. I sette gestori senza query mantengono lo String percorso intatto: nessuna domanda, nessun doppio codice da risolvere. Deliberatamente NON cambiato, e devono rimanere in quel modo — tutti codificare esattamente una volta oggi, in modo da "fissare" loro sarebbe 502 traffico dal vivo: abbonamento-catalogo (splice un DECODED @RequestParam locale), sottoscrizione-promozioni (fisso literal), E' il momento giusto. (SHA-256 hex, un punto fisso sotto URI COMPONENT), LeadIntakePublicController (variabile percorso UUID codificato, mai chiama ottenereQueryString), la registrazione VOIP ingest POST (config literal, tutti gli input nel corpo multipart) e CapchaVerificationService (il carico è nel corpo JSON).

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo