Italiano

Strumenti per sviluppatori · HTML escaper di entità

Perché l'escape HTML non è sufficiente all'interno degli attributi script, onclick e href

· Perché è importante

html sicurezza codifica dell'URL

Perché l'escape HTML non è sufficiente all'interno degli attributi script, onclick e href visualizzati come diagramma di riferimento ai caratteri sicuro per il browser
Illustrazione vettoriale originale ToolAcre

L'escape delle entità protegge il testo HTML e i valori degli attributi, ma un valore all'interno di un blocco di script, un gestore eventi o un URL viene letto da un parser diverso. Questo post spiega ogni contesto e la codifica di cui ha bisogno.

Il valore di escape ancora eseguito: una stringa utente all'interno di un gestore onclick e il motivo per cui " non l'ha salvata

Il valore di escape ancora eseguito: una stringa utente all'interno di un gestore onclick e il motivo per cui " non l'ha salvato. Un attributo onclick viene analizzato come HTML e quindi compilato come JavaScript. La codifica solo del delimitatore HTML può comunque lasciare un programma pericoloso dopo che il browser ha decodificato il valore dell'attributo.

Per verificare il contesto JavaScript di escape html, costruisci il valore di escape per uno sviluppatore che è sfuggito a tutto e ha comunque ricevuto un report XSS. Conserva ancora eseguito un utente mentre il contesto del parser nidificato produce una stringa all'interno di un onclick; identificare dove viene utilizzato il gestore e perché quot. L'osservazione su non salvata appartiene solo al testo HTML.

Un documento, diverse lingue: HTML, JavaScript, URL e CSS hanno ciascuno il proprio parser e regole di escape

Un documento, diverse lingue: HTML, JavaScript, URL e CSS hanno ciascuno il proprio parser e regole di escape. Un singolo documento può richiamare i parser HTML, JavaScript, URL e CSS. Ogni lingua assegna alla punteggiatura un significato diverso, quindi un generico flag di "fuga" non può descrivere in modo sicuro ogni destinazione.

Uno sviluppatore che è sfuggito a tutto e ha comunque ricevuto un report XSS può testare un documento in diverse lingue registrando gli URL javascript html e prima del passaggio del contesto del parser nidificato. Confronta i CSS ciascuno con il proprio seguito e individua il parser responsabile del proprio parser ed esci. Questo risultato del contesto JavaScript con escape html spiega le regole, non i contesti eseguibili.

Inside <script>: perché le entità non vengono decodificate lì ed è invece richiesto l'escape della stringa JSON o JavaScript

Inside <script>: perché le entità non vengono decodificate lì ed è invece richiesto l'escape delle stringhe JSON o JavaScript. All'interno del testo non elaborato dello script, i riferimenti denominati HTML non vengono decodificati come il testo normale. Serializza i dati come JSON con un serializzatore collaudato, evita l'interpolazione degli script in linea e tieni conto delle sequenze di script di chiusura.

Isolare all'interno dello script le entità Why in un breve esempio di contesto con parser nidificato. Gli spettacoli non vengono decodificati lì come origine letterale, segui e json o javascript alla sua destinazione ed è richiesto il nome della stringa di lettura API. Per l'html che scappa dal contesto javascript, rimane invece l'evidenza legata al parser.

Attributi del gestore eventi: prima decodificati come HTML e poi eseguiti come JavaScript, quindi si applicano due livelli di escape

Attributi del gestore eventi: prima decodificati come HTML e poi eseguiti come JavaScript, quindi si applicano due livelli di escape. Gli attributi del gestore eventi combinano due grammatiche e dovrebbero essere evitati. Il comportamento di associazione con addEventListener mantiene i dati fuori dall'origine eseguibile ed elimina la necessità dell'escape nidificato HTML-plus-JavaScript.

Tratta gli attributi del gestore eventi decodificati come un esperimento di confine. Uno sviluppatore che è sfuggito a tutto e ha comunque ricevuto un report XSS dovrebbe prima conservarlo come html ed eseguire un'operazione di contesto del parser nidificato, quindi ispezionare quindi eseguire come javascript carattere per carattere prima di modificarne due livelli. L'affermazione sull'escape apply si ferma a questo livello HTML.

href e src: codifica percentuale per il valore più entità in fuga per l'attributo e il problema javascript: schema

href e src: codifica percentuale per il valore più entità in escape per l'attributo e il problema javascript: schema. Per href e src, prima crea e convalida URL, rifiuta schemi indesiderati, componenti con codifica percentuale, quindi HTML-escape il valore finale dell'attributo tra virgolette. La sola conversione di entità non rifiuta javascript: URL.

Riproduci href e src percent con input innocui anziché materiale del cliente. Registra la codifica per il valore, osserva più l'entità in fuga e conta ogni passaggio intenzionale del contesto del parser nidificato. Quel trail del contesto Javascript di escape html consente a uno sviluppatore che è sfuggito a tutto e ha comunque ricevuto un report XSS valutare l'attributo e il problema dello schema javascript senza indovinare.

Esempio pratico: un valore inserito nel testo, in un attributo, in onclick e in href: la codifica corretta per ciascuno

Esempio pratico: un valore inserito nel testo, in un attributo, in onclick e in href: la codifica corretta per ciascuno. Lo stesso valore appartiene al testo tramite l'escape HTML, in un attributo di dati tramite la gestione degli attributi tra virgolette, nel codice tramite la serializzazione strutturata e in una costruzione da URL tramite URL più controlli dello schema.

Posiziona, ad esempio, un valore, inserito nel testo, e un attributo in onclick fianco a fianco durante la revisione del contesto del parser nidificato. Uno sviluppatore che è sfuggito a tutto e ha comunque ricevuto un rapporto XSS può quindi decidere se e in href la modifica è avvenuta alla conversione o a valle. Mantieni la conclusione del contesto javascript di escape html sulla codifica corretta per ciascuna dichiarazione di sicurezza generica.

Cosa non copre: CSS injection e helper specifici del motore del modello

Cosa non copre: CSS injection e helper specifici del motore del modello. Le API CSS injection e specifiche del motore del modello vengono omesse perché introducono grammatiche e contratti quadro aggiuntivi. La scelta più sicura è utilizzare API che mantengano i dati separati dal codice.

Definire cosa non fa prima di eseguire il contesto del parser annidato. Salva l'iniezione CSS di copertina e come controllo, ispeziona i punti di codice dietro gli helper specifici del motore del modello e mappa l'evidenza del contesto del parser nidificato all'interprete successivo. Ciò rende verificabile l'evidenza del contesto del parser nidificato per uno sviluppatore che è sfuggito a tutto e ha comunque ricevuto un report XSS che indaga sul contesto Javascript in fuga da HTML.

Conclusione: codifica per il parser che lo leggerà: come l'escape di entità HTML gestisce il livello HTML e il codificatore e decodificatore URL nello stesso prodotto gestisce il livello URL

Conclusione: codifica per il parser che lo leggerà: come l'escape di entità HTML gestisce il livello HTML e il codificatore e decodificatore URL nello stesso prodotto gestisce il livello URL. ToolAcre copre il livello HTML e il suo pannello URL copre la rappresentazione dei componenti URL. Nessuno dei due panel concede l'autorizzazione, disinfetta il markup, convalida gli schemi o protegge le dichiarazioni SQL.

Collega la codifica takeaway per l'output del contesto del parser nidificato osservabile. Mantieni il parser che leggerà accanto al risultato a passaggio singolo, quindi verifica dove si trova il modo in cui l'escape dell'entità di ingresso html gestisce il file. Uno sviluppatore che è sfuggito a tutto e ha comunque ricevuto un rapporto XSS può ora esaminare il livello html e la ricerca del contesto javascript con escape html ristretto. La decisione pratica alla base di questo articolo è specifica: l'escape dell'entità protegge il testo HTML e i valori degli attributi, ma un valore all'interno di un blocco di script, un gestore di eventi o un URL viene letto da un parser diverso. Questo post spiega ogni contesto e la codifica di cui ha bisogno. L'azione del lettore è altrettanto concreta: collega all'escape dell'entità HTML per la fase di escape degli attributi e dimostra il passaggio al pannello di codifica e decodifica URL per il valore href senza caricamento della pagina.