Skip to content

5 Collaudo DevTools

Valentino Aglianó edited this page May 31, 2026 · 28 revisions

🔥 Capitolo 4: La Prova del Battesimo di Fuoco (Debug & Log)

Il collaudo e la manutenzione del motore Panzer v7 all'interno delle infrastrutture della Pubblica Amministrazione richiedono un monitoraggio rigoroso tramite la console dei moduli di sviluppo del browser (F12 / DevTools) applicando un approccio Zero Trust.

Warning

➡️ Falsi Positivi in Debug: Quando i DevTools di Chrome sono aperti con l'opzione "Disable cache" attiva, il Service Worker potrebbe ignorare le logiche di caching del Bunker Mode. Disattiva l'opzione per i test reali offline.
⚠️ Configurazione: getNetworkProfile richiede monitoraggio RTT. Non disabilitare le API di rete.

Caution

🛑 Variabile [ encryptionKey ]: non portare nel codice questa variabile a null altrimenti scattano le protezioni...


📊 Tassonomia dei Log di Logistica e Storage

Durante le sessioni di ispezione attiva, l'operatore tecnico deve fare riferimento alla seguente mappatura semantica delle stringhe generate nativamente dal Service Worker nei log di console:

🔹📄 Log
Alcuni esempi di Log di Console (SW Panzer v7.3) Innesco Operativo
📦🛡️ SW: Risorsa validata e salvata: ${targetUrl} Successo cache.
🛡️ SW: Risorsa estratta dal Bunker: ${url} Decrittazione in RAM.
⚠️ SW Security: Firma fallita per ${url} Errore firma.
📄❌ SW: Fallimento validazione/download su: ${url} Violazione soglie/dimensioni.
🌐❌ SW: Offline in ${mode} (Profilo: ${profileName}) Stato resilienza.
🔄 SW: Background Sync avviato... Sincronizzazione async.
🚨 SW: Storage Pieno! - Emergency Clean... Gestione QuotaExceeded.
⚠️ SW: ErrorPage B64 Not Blob... Errore fallback grafico.
🗄️🚨 SW: COMPROMISSIONE RILEVATA! ACTIVATION_ABORTED_SECURITY_BREACH Purga atomica.
🗄️🔥 SW: Tabula rasa completata con successo. Risultato della Purga atomica.
⚠️💣 ANOMALIA CRITICA: Vault compromesso, chiave sparita! DB presente ma chiave assente...
❌🛡️ SW: Errore durante la cifratura del file. Errore di Cifratura con (throw err).per il chiamante try/catch
❌🛡️ SW: Fallimento decrittazione. Dati non integri o chiave errata. throw new Error("VAULT_LOCKED_DECRYPTION", { cause: err }.
📜📦 SW: TTL Scaduto, Del: ${request.url} Pulizia dei dati non cifrati ogni X giorni.
🧹 SW: UserCache svuotata, recupera spazio critico. Usata quado interviene: QuotaExceeded
🔑 SW: Primo avvio, inizializzazione chiave. Creazione Della Key_master.
🛡️🔍 SW: Check di Sicurezza... Avvio Controllo di Integrità sulla Key_master .
🛡️✅ SW: Integrità Bunker confermata. Controllo di Integrità sulla Key_master, Riscontro negativo di Manipolazione/Corruzione.
🌐👮‍♂️ SW: Rete Degradata, [ ${profileName} ].\n SWR(Sate-While-Revlidate), ON per continuità operativa... profili di rete degradati Low & VeryLow forzati ad usare SWR come strategia di resilienza...

📦 Identificazione dei Magazzini di Memoria

🔹📦🛡️ (Bunker), (mappato in `CONFIG.cacheName`)
Indica operazioni di lettura, scrittura o ripristino di un asset di sistema core. Questa zona è protetta da cifratura hardware-assisted AES-GCM, isolata e vitale per il funzionamento offline. Il frontend riceve queste risorse marchiate dall'header personalizzato:
`X-PWA-Source: Bunker-Decrypted`
🔹📦🔓 (Magazzino), (mappato in `CONFIG.userCacheName`)
Indica la gestione delle risorse utente sussidiarie. È un'area di storage dinamica, volatile, non cifrata e sacrificabile in caso di emergenza, vincolata al ciclo di vita di `CONFIG.userCacheTTL`.

🚨 Protocollo di Emergenza e Purga

In presenza di anomalie hardware o tentativi di manipolazione (es. iniezione di chiavi corrotte), il motore esegue il protocollo distruttivo definito nel diagramma sottostante:

🔹Scattato `QuotaExceededError` (Memoria Piena)
Causa: Il dispositivo client ha esaurito lo spazio disco. Durante il download o la cifratura degli asset pesanti la scrittura fallisce.
Azione: Poiché il test del canarino eseguito all'avvio in RAM ha già dovuto convalidare l'integrità del Vault, il sistema interrompe la sincronizzazione in modo pulito. Nessuna purga viene avviata, preservando l'integrità dei file già archiviati.
🔹🗄️🚨💣 `VAULT_SECURITY_BREACH_INTEGRITY` / `VAULT_EMPTY_TEMPORARY` (Purga Atomica)
Causa: Rilevata alterazione strutturale dei byte della chiave master, fallimento del test crittografico di decrittazione sul Canary Data, oppure totale e inspiegabile assenza del record della chiave da IndexedDB a Service Worker già inizializzato.
Azione del software (Tabula Rasa & Reset): Il Service Worker attiva il protocollo distruttivo immediato. Esegue una cancellazione radicale di tutte le cache (`CONFIG.cacheName` e `CONFIG.userCacheName`), rasa al suolo l'intera struttura di IndexedDB (`PWA_Vault`), azzera le variabili in RAM ed emette un segnale broadcast.
sequenceDiagram
    participant SW as ⚙️ Guardiano (SW)
    participant CA as 💾 Magazzino (Cache)
    participant DB as 🗄️ Caveau (DB)
    participant FE as 🖥️ Schermo (App)

    Note over SW: Rilevato pericolo/corruzione
    SW->>CA: 🧹 "Butta via tutto!"
    SW->>DB: 🧨 "Distruggi il caveau!"
    SW->>SW: 🧠 "Pulisci la memoria RAM"
    SW->>FE: 📢 "Ricarica tutto da zero!"
Loading
🔹Effetto Nuova Installazione:
Il browser si ritrova davanti a una tabula rasa assoluta e avvia un ciclo di re-installazione ex-novo. Se la comunicazione diretta con il frontend dovesse fallire durante la crisi, l'effetto si concretizza in modo deterministico alla primissima riapertura o aggiornamento manuale dell'applicazione da parte dell'utente, costringendo il sistema a ripartire da uno stato nativo pulito e a riscaricare tutti gli asset core integri direttamente dal server d'origine. Nel caso limite in cui la rete sia totalmente assente e il re-fetch fallisca, il motore si isolerà definitivamente nello stato logico protetto `VAULT_LOCKED_NO_KEY`, dirottando l'erogazione verso `CONFIG.fallbackImage` o stampando la pagina d'emergenza HTML 503.

🛠️ Protocollo di Collaudo Operativo

Chiunque può testare la reattività e l'affidabilità del sistema seguendo questa batteria di test guidati direttamente dai DevTools del browser.

🔹1. Test di Stabilità Asincrona (Cold Start)
Verifica che il riavvio forzato del motore non provochi perdite di dati o falsi positivi.
1. Apri i DevTools (`F12`) -> scheda Application -> Service Workers.
2. Clicca sul pulsante Stop (il pallino verde diventerà bianco, svuotando la RAM del Worker).
3. Torna sulla pagina e premi `F5` per ricaricare.
4. Risultato atteso: Il Service Worker si riavvia, rileva `lastVaultCheck = 0`, esegue immediatamente `deepVaultValidation()`, estrae la chiave intatta dal disco e convalida il canarino. L'applicazione si avvia normalmente senza alcun errore crittografico.
🔹2. Test di Isolamento per Spazio Pieno (Quota Exceeded)
Verifica che la saturazione della memoria non inneschi per errore la purga.
1. Nei DevTools, vai sulla scheda Application -> menu Storage (Archiviazione).
2. Spunta la casella "Simulate custom storage quota" e imposta il limite a 1 MB.
3. Svuota la cache e ricarica la pagina (`F5`) per forzare la sincronizzazione `performSync`.
4. Risultato atteso: La scrittura dei file pesanti fallisce generando un'eccezione, ma la console mostra che il Vault è stato promosso come integro. Nessun log di purga compare, le vecchie cache non vengono toccate.
🔹3. Test di Violazione per Chiave Rimossa
Verifica la reazione del sistema se la chiave master viene rimossa dal disco.
1. Nei DevTools, vai su Application -> IndexedDB -> `PWA_Vault` -> `keys`.
2. Seleziona il record della riga `master_key` e premi il tasto Canc sulla tastiera per eliminarlo.
3. Spostati su **Service Workers**, clicca su **Stop** per scaricare la RAM, e ricarica la pagina con `F5`.
4. Risultato atteso: Al riavvio, il sistema rileva l'assenza della chiave (`VAULT_EMPTY_TEMPORARY`), attiva all'istante la purga e pialla completamente il Cache Storage.
🔹4. Test di Violazione per Chiave Corrotta (Iniezione di Codice)
Verifica la reazione se i byte della chiave vengono manipolati dall'esterno. Poiché la chiave è protetta nativamente in sandbox hardware/software con `extractable: false`, per simulare la corruzione è necessario iniettare un oggetto sostitutivo fasullo tramite console.


1. Nei DevTools, posizionati sulla scheda Console.
2. Sblocco del Browser (Protezione Self-XSS): Se la console blocca l'incolla, digita manualmente a schermo la stringa `consenti incolla` (o `allow pasting` se il browser è in inglese) e premi Invio.
3. Copia e incolla il seguente script d'iniezione e premi Invio:
let req = indexedDB.open("PWA_Vault", 1);
req.onsuccess = function(e) {
    let db = e.target.result;
    let tx = db.transaction("keys", "readwrite");
    let putReq = tx.objectStore("keys").put({ finta_chiave: "dati_corrotti_12345" }, "master_key");
    putReq.onsuccess = function() {
        console.log("🔥 Chiave corrotta iniettata con successo nel DB!");
        db.close();
    };
};

Per forzare la verifica delle routine di rete, si raccomanda di configurare il pannello Network dei DevTools emulando profili di connessione degradati (es. Fast 3G o Slow 3G). Questo permette di validare visivamente il corretto funzionamento della routine getNetworkProfile, l'estrazione dei limiti da CONFIG.networkResilient.profiles e lo scatto automatico dei relativi timeout dinamici.

Tip

SIMULAZIONE DEL TOTAL BLACKOUT NEI TEST DI COLLAUDO: Nel pannello Application -> Service Workers dei DevTools, spunta la casella "Offline" e monitora i log. Se il sistema è a regime, vedrai comparire esclusivamente stringhe con il marcatore 📦🛡️ [Bunker-Decrypted], a testimonianza del fatto che la PWA sta girando in totale isolamento dal server e decifrando le risorse al volo via Web Crypto API.

↩ Torna alla Home

🗂️ Indice Rapido Wiki


LOGO

Clone this wiki locally