Toolkit dati per sviluppatori: domande
Come il toolkit gestisce i tuoi dati, quali utilità sono esatte e dove ciascuna si ferma deliberatamente.
La versione breve
Ogni utilità qui viene eseguita nella scheda del tuo browser. Niente di ciò che incolli viene caricato o archiviato da un server delle applicazioni ToolAcre. L'analisi a livello di sito viene eseguita solo sull'host di produzione canonico configurato e viene divulgata nell'Informativa sulla privacy; i valori incollati sono esclusi dagli eventi di analisi di ToolAcre.
Le domande seguenti sono quelle che decidono se puoi fidarti di un particolare risultato. Dove un'utilità è esatta, lo dice; laddove si avvicina o rifiuta, dice anche questo.
Cosa succede a ciò che incolli
- Ogni conversione, hash, decodifica e differenza viene eseguita nella scheda del tuo browser. Nessun input viene caricato, registrato o archiviato su un server, perché non è coinvolto alcun server una volta caricata la pagina.
- Gli hash provengono dall'implementazione Web Crypto del browser e gli UUID dal suo generatore casuale crittograficamente sicuro. Nessuno dei due prevede una chiamata di rete.
- Niente di ciò che digiti viene scritto nella memoria locale o in un cookie. Ricaricando la pagina la si elimina; chiudendo la scheda la si elimina.
- L'analisi a livello di sito viene eseguita solo sull'host di produzione canonico configurato e viene divulgata nell'Informativa sulla privacy; gli host locali e di anteprima lo rifiutano. Valori, token, URL e contenuti dei file incollati sono esclusi dagli eventi di analisi di ToolAcre. La pubblicità è disabilitata nella configurazione attuale.
- Detto questo: una chiave JWT o API è una credenziale attiva. L'abitudine più sicura è non incollarne mai uno in una pagina web che non hai scritto tu, per quanto attendibili siano le sue affermazioni, inclusa questa.
Domande
Qualcosa che incollo è stato caricato?
Nessun caricamento ToolAcre lo riceve. Ogni conversione, hash, decodifica e differenza avviene nel tuo browser. L'analisi a livello di sito è limitata all'host di produzione canonico configurato e divulgata nell'Informativa sulla privacy; valori incollati, token, URL e contenuti dei file sono esclusi dagli eventi di analisi di ToolAcre.
Viene memorizzato qualcosa tra una visita e l'altra?
No. Il toolkit non scrive nulla su localStorage, sessionStorage, IndexedDB o sui cookie. Ricaricando la pagina si cancella tutto ciò che hai inserito; chiudere la scheda fa lo stesso. Non esiste un sistema di account, quindi non c'è nulla a cui iscriversi e nulla da eliminare.
Base64 qui gestisce emoji e testo non inglese?
Sì, esattamente. Il testo viene convertito in UTF-8 byte prima della codifica e decodificato nuovamente con un decodificatore rigoroso, quindi emoji, CJK, arabo, combinano segni e ZWJ sequenziano tutto andata e ritorno byte per byte. Questo è l'errore specifico che btoa() integrato nel browser sbaglia: genera alcuni caratteri e produce silenziosamente byte errati per altri.
Come fa il validatore JSON a trovare la posizione dell'errore?
Con il proprio scanner invece che leggendo il messaggio di errore del motore. Il testo dell'errore JSON del browser è specifico del motore e l'attuale V8 omette completamente la posizione per alcuni guasti. Lo scanner percorre il documento e segnala il primo offset che non è valido JSON, con un motivo scritto per un essere umano: una virgola finale, una stringa tra virgolette singole, una stringa senza terminazione, più la riga incriminata e un accento circonflesso.
Quali funzionalità YAML sono supportate?
Struttura standard YAML 1.2, letta con uno schema limitato che può produrre solo dati a forma di JSON: stringhe, numeri, booleani, null, sequenze e mappature. I tag che costruiscono oggetti arbitrari vengono rifiutati. È possibile scegliere tra lo schema JSON (il più rigoroso) e lo schema Core (che risolve anche i valori ~ e vuoti in null, interi esadecimali e .inf/.nan).
Perché il mio file YAML fallisce con "tag sconosciuto"?
Perché utilizza un tag personalizzato o specifico della lingua come !!js/function, !!python/object/apply, !!binary o !!timestamp. Un caricatore configurato per costruirli è un costruttore di oggetti arbitrari, che in diversi linguaggi è una classe di bug di esecuzione di codice remoto. Questo strumento li rifiuta in base alla progettazione anziché fare un'eccezione.
Gli hash sono corretti?
Vengono calcolati dall'implementazione Web Crypto del browser e la suite di test li confronta con i vettori pubblicati: SHA-256 di "abc" è ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad e i vettori SHA-1, SHA-384 e SHA-512 vengono controllati insieme ad esso, insieme ai digest di stringhe vuote.
Perché SHA-1 è contrassegnato come danneggiato?
Perché lo è. Una collisione pratica è stata pubblicata in 2017 (SHAttered) e le collisioni con prefisso scelto, la variante che infrange firme e certificati, sono diventate accessibili in 2020. È incluso in modo da poter riprodurre i valori SHA-1 esistenti come gli ID oggetto git e le firme legacy API, che è una cosa diversa dal fare affidamento su di esso.
Da dove provengono gli UUID?
Da crypto.randomUUID() o crypto.getRandomValues() dove randomUUID non è disponibile. Entrambi sono il generatore crittograficamente sicuro del browser. Math.random() non viene mai utilizzato: il suo stato interno può essere recuperato da una breve serie di output, il che rende prevedibile qualsiasi cosa costruita da esso. Se non esiste una fonte sicura, lo strumento si rifiuta di generare anziché eseguire il downgrade silenziosamente.
Il decoder JWT verifica le firme?
No. Decodifica l'intestazione e il payload e ti mostra cosa affermano. Non controlla la firma, quindi nulla di ciò che mostra dimostra che un token è autentico, inalterato o emesso da chiunque nomina. La verifica richiede la chiave dell'emittente e un algoritmo bloccato, che appartengono al sistema che si fida del token, non a una pagina web.
Posso incollare un token di accesso reale?
Puoi e non dovresti, qui o altrove. Un live token è una credenziale: chi lo possiede può agire come te fino alla sua scadenza. Questa pagina decodifica localmente e non invia nulla, ma questa è un'affermazione che non puoi verificare a colpo d'occhio su nessun sito, quindi l'abitudine sicura è scaduta o testare i token. Se ne hai già incollato uno da qualche parte, ruotalo.
Come funziona la differenza del testo?
Calcola uno script di modifica della sottosequenza comune più lunga, che fornisce un insieme minimo di aggiunte e rimozioni piuttosto che un ingenuo confronto riga per riga. Le linee iniziali e finali identiche vengono tagliate per prime, quindi il confronto tra due file di grandi dimensioni che differiscono in un punto è veloce.
Perché il differenziale rifiuta input molto grandi?
L'algoritmo LCS necessita di tempo e memoria proporzionali al prodotto delle due lunghezze. Oltre un paio di migliaia di righe diverse che diventano un'allocazione che una scheda del browser non dovrebbe tentare, quindi lo strumento rifiuta in modo netto e suggerisce di confrontare un'area più piccola. I file che condividono la maggior parte del contenuto vengono tagliati per primi e rimangono veloci indipendentemente dalle dimensioni totali.
Il rilevamento dell'unità timestamp è affidabile?
È un’euristica documentata e non tace mai. Qualsiasi valore pari o superiore a 10^11 viene considerato come millisecondi, perché 10^11 secondi è l'anno 5138 mentre 10^11 millisecondi è 1973. L'unità effettivamente utilizzata viene sempre visualizzata insieme al risultato ed è possibile sovrascriverla.
Il toolkit funziona offline?
Una volta caricata la pagina, sì, nulla di ciò che fa ha bisogno della rete. Non è presente alcun addetto al servizio, quindi il caricamento iniziale richiede comunque una connessione.
Funziona su un telefono?
SÌ. Il layout funziona da 320 CSS pixel verso l'alto, il testo del modulo è 16px quindi Safari mobile non esegue lo zoom sulla messa a fuoco e i controlli soddisfano il minimo di 44 pixel touch-target. Gli editor e gli output scorrono all'interno delle proprie caselle, quindi una lunga riga di JSON minimizzato non allarga mai la pagina.
Lo strumento di disinfezione dell'editor HTML è sicuro da usare su input non attendibili?
No, e lo dice il comitato. È una lista consentita per l'output dell'editor: elementi e attributi al di fuori di un elenco fisso vengono rimossi, i gestori di eventi non possono sopravvivere perché nessun attributo sopravvive a meno che non sia elencato e vengono mantenuti solo http, https, mailto, tel, ftp e relativi collegamenti. Ciò rende ciò che questo editor emette sicuro da incollare in una pagina che controlli. Non è un filtro XSS generico: è un tokenizzatore di stringhe, non un parser HTML5, quindi un payload ostile potrebbe in linea di principio essere analizzato in modo diverso da un browser. L'anteprima è un iframe sandbox senza script di autorizzazione, quindi nulla può essere eseguito indipendentemente.
Perché a volte il calcolatore chmod mostra S e T in maiuscolo?
Perché il bit speciale è impostato e il bit di esecuzione corrispondente no. 4755 è rwsr-xr-x, un programma setuid che può essere eseguito; 4644 è rwSr--r--, un file setuid che nessuno può eseguire, il che è quasi sempre un errore. La lettera maiuscola è il sistema che ti dice che la parte non ha nulla su cui agire, e una calcolatrice che mostrasse una s minuscola nasconderebbe l'unica cosa che dovevi vedere.
Il convertitore docker esegue mai il comando che incollo?
No. Divide la stringa con un tokenizzatore che riconosce le virgolette e legge i pezzi. Non c'è nessuna valutazione, nessuna shell e nessun processo figlio in nessuna parte della base di codice. Gli apici inversi, $(...) e il punto e virgola rimangono caratteri letterali. Qualsiasi flag che non può convertire viene nominato in un avviso visibile anziché eliminato, perché un file di composizione che esegue silenziosamente meno del comando da cui proviene è la cosa peggiore che questo strumento potrebbe produrre.
Perché i tempi di anteprima cron non corrispondono al mio server?
Di solito il fuso orario: cron utilizza la zona della macchina su cui viene eseguito e l'anteprima utilizza la zona che hai scelto, quindi impostala sulla zona del tuo server. L'altra causa probabile è la regola del giorno: quando sono impostati sia il giorno del mese che il giorno della settimana, cron viene eseguito quando EITHER corrisponde, che si attiva più spesso di quanto la maggior parte delle persone si aspetti. Il generatore avvisa quando ciò si applica.
Ci sono annunci o analisi?
La pubblicità è disabilitata nella configurazione attuale. L'analisi a livello di sito viene eseguita solo sull'host di produzione canonico configurato e viene divulgata nell'Informativa sulla privacy; valori incollati, token, URL e contenuti dei file sono esclusi dagli eventi di analisi di ToolAcre.
Limitazioni
- Tutto viene eseguito in un'unica scheda del browser, quindi ogni utilità è limitata dalla memoria del tuo dispositivo. Ciascuno ha un limite esplicito agli input e rifiuta il lavoro sovradimensionato piuttosto che congelarsi.
- L'hashing e la generazione di UUID richiedono un contesto sicuro (https:// o localhost), perché è lì che i browser espongono Web Crypto.
- Il decodificatore JWT non verifica mai le firme e i token JWE crittografati non possono essere decodificati affatto.
- YAML viene letto con schemi di soli dati; i documenti che si basano su tag personalizzati vengono rifiutati in base alla progettazione.
- La tabella delle entità HTML copre il sottoinsieme pratico anziché tutti i riferimenti denominati 2,231 HTML5 e i nomi sconosciuti vengono segnalati anziché indovinati.
- La differenza confronta intere linee. Non è presente alcuna evidenziazione a livello di parola o di carattere all'interno di una riga modificata.
- Lo strumento di disinfezione dell'editor HTML è una lista consentita per il proprio output, non un filtro XSS generico per input non attendibili e non ha immagini, tabelle o stili.
- Il convertitore docker gestisce un comando di esecuzione docker alla volta e nomina ogni flag che non può rappresentare invece di eliminarlo.
- Il generatore cron legge solo la sintassi crontab a cinque campi e i tempi di esecuzione successiva sono un'anteprima basata sui dati del fuso orario del browser piuttosto che una garanzia sul tuo server.