Il check gratuito guarda la tua app come la vede il browser di qualunque visitatore — da fuori, senza login — e trasforma ciò che vede in quattro punteggi e un breve elenco di problemi. Dura pochi secondi e non tocca mai i tuoi dati.
In breve#
- Un indirizzo alla volta, e solo quando lo chiede il proprietario (o chi ha la sua autorizzazione).
- Solo ciò che è già pubblico: la home page, i file JavaScript che carica, gli header di risposta, i record DNS pubblici e il certificato TLS.
- Niente viene usato, scaricato o modificato: nessun login, nessuna chiave trovata viene mai usata, nessun dato letto dal tuo database.
- Quattro punteggi separati: Sicurezza, Performance, Accessibilità e SEO. Non li mescoliamo in un numero unico, così vedi dove sta il problema.
Chi può richiedere un check#
Chiunque può avviare il check gratuito, ma solo su un’app di cui è proprietario o che è autorizzato a far analizzare. Prima che il check parta spunti una casella che conferma proprio questo; senza la spunta non parte nulla. Registriamo la conferma, la versione del testo che hai accettato e l’orario.
Teniamo il check gratuito volutamente leggero, perché una dichiarazione falsa non possa fare danni: legge solo ciò che qualunque browser riceve già, accetta al massimo 3 check all’ora sullo stesso sito, chiunque li chieda, rispetta il robots.txt del sito e si presenta con il proprio nome. I controlli che vanno oltre la superficie pubblica non sono mai automatici: fanno parte dell’audit completo e avvengono solo con l’autorizzazione esplicita del proprietario.
Cosa succede durante un check#
- Validiamo la richiesta. L’indirizzo deve essere un sito pubblico sulle porte web standard; reti private e indirizzi interni vengono rifiutati.
- Leggiamo prima il
robots.txtdel sito. Se chiede agli strumenti automatici di non leggere la home page, ci fermiamo e te lo diciamo. - Carichiamo la home page e i file JavaScript del sito dichiarati dalla pagina — fino a 40 file, entro un totale di 20 secondi e 20 MB per l’intero check. Gli script di altre aziende non vengono scaricati.
- Sul tuo dominio consultiamo i record pubblici: il certificato TLS e i record DNS che proteggono la tua email (SPF, DMARC) e i tuoi certificati (CAA). Sul sottodominio di un builder sono della piattaforma, quindi li saltiamo.
- Chiediamo se esistono quattro file fissi —
/.env,/.git/config, le source map indicate dai tuoi script e/sitemap.xml— leggendo solo il codice di risposta, mai il file. - Calcoliamo i punteggi e ti mostriamo il referto. Il check conserva solo i risultati, mai il contenuto delle tue pagine.
Cosa non facciamo mai#
- Leggere, copiare o conservare dati del tuo database.
- Usare una chiave, una password o un token che troviamo. Segnaliamo che è visibile; non lo proviamo mai.
- Scaricare file di configurazione, codice sorgente o source map.
- Indovinare nomi di file o di tabelle, o esplorare altre pagine.
- Fare login, inviare moduli o modificare qualunque cosa.
- Nascondere chi siamo: ogni richiesta porta il nome
Root92-MigrationScannere un link a https://webappscanner.root92.com/about-scanner.
I tuoi punteggi, spiegati#
| Punteggio | Cosa ti dice | Come si calcola |
|---|---|---|
| Sicurezza (0–100) | Quanto potrebbe sfruttare un estraneo, e quanto l’app è legata alla sua piattaforma. | Parte da 100. Ogni problema trovato toglie un numero fisso di punti (vedi l’elenco sotto). Non scende mai sotto 0. |
| Performance (0–100) | Quanto è pesante e veloce la tua home page. | Cinque misure, ognuna valutata da 0 a 100 e pesata: tempo di risposta del server 40%, peso del JavaScript 30%, numero di file JavaScript 10%, peso dell’HTML 10%, rendering lato server 10%. |
| Accessibilità (mostrata come problemi) | Le barriere più comuni per chi usa screen reader o tastiera. | Sei controlli sul markup, pesati secondo la gravità della barriera. Il referto mostra quanti non sono superati. |
| SEO (mostrata come problemi) | Se i motori di ricerca possono indicizzare la home page e presentarla bene. | Tredici controlli; ogni problema toglie punti da 100. Il referto mostra quanti ne abbiamo trovati. |
- «Punteggio ≤ N» significa che non abbiamo finito di leggere la tua app entro il limite di tempo o di dimensione. Ciò che non abbiamo letto può nascondere altri problemi, quindi il punteggio reale può solo essere più basso.
- «Non misurato» significa che il controllo non ha potuto girare — di solito perché la pagina è costruita interamente nel browser e il suo HTML è vuoto finché non gira il JavaScript.
- App sul sottodominio di un builder: dominio, email e certificato sono della piattaforma, non tuoi, quindi non li contiamo a tuo sfavore.
- Nessun punteggio viene mostrato se non siamo riusciti a raggiungere il sito, o se il suo
robots.txtci ha chiesto di non leggerlo. In entrambi i casi ti contattiamo, se ci hai lasciato la tua email.
Cosa controlliamo#
Il referto gratuito mostra subito i problemi più importanti. Gli altri sono conteggiati nel punteggio ed elencati nell’audit completo.
Sicurezza — piattaforma e backend
| Controllo | Cosa guardiamo | Punti | Dove |
|---|---|---|---|
| Costruita con un site builder | Segni di Bolt, v0, Replit, Base44, Framer, Webflow, Wix, Squarespace, Shopify, WordPress, Bubble, Softr, Glide, Retool o un altro builder AI | 12 | Referto gratuito |
| Ospitata sul sottodominio della piattaforma | L’app risponde sull’indirizzo del builder (conta al posto della riga precedente, non in aggiunta) | 12 | Referto gratuito |
| Backend Supabase | Un indirizzo Supabase nella pagina o nei suoi script | 16 | Referto gratuito |
| Backend Firebase | Un indirizzo Firebase nella pagina o nei suoi script | 16 | Referto gratuito |
Sicurezza — chiavi e file esposti
| Controllo | Cosa guardiamo | Punti | Dove |
|---|---|---|---|
| Chiave di servizio del database nel browser | Una chiave Supabase con pieni diritti di amministrazione nel tuo codice pubblico | 45 | Referto gratuito |
| Chiave del database nel browser | La tua chiave pubblica Supabase. È sicura solo se la row-level security protegge ogni tabella | 34 | Referto gratuito |
| Altre chiavi segrete nel codice | Chiavi segrete di servizi come Stripe, AWS, OpenAI, Anthropic, GitHub, Slack, SendGrid, Twilio o Google, o certificati privati | 40 | Referto gratuito |
File .env raggiungibile | Se il tuo file di ambiente può essere scaricato da chiunque | 40 | Referto gratuito |
Cartella .git raggiungibile | Se la cronologia del tuo codice può essere scaricata da chiunque | 40 | Referto gratuito |
| Source map pubbliche | Se il sorgente originale dei tuoi script può essere scaricato | 8 | Audit completo |
Sicurezza — protezioni del browser
| Controllo | Cosa guardiamo | Punti | Dove |
|---|---|---|---|
| Cookie non sicuri | Cookie impostati senza i flag Secure, HttpOnly o SameSite | 4 | Audit completo |
| Content-Security-Policy assente | L’header che limita quali script possono girare | 2 | Audit completo |
| HSTS assente | L’header che obbliga i browser a usare HTTPS | 2 | Audit completo |
| Protezione dal clickjacking assente | Protezione contro l’inserimento della tua pagina in un altro sito | 2 | Audit completo |
| CORS aperto a qualunque sito | Risposte leggibili dagli script di qualunque altro sito | 2 | Audit completo |
| Contenuto misto | Una pagina HTTPS che carica immagini o script in HTTP semplice | 2 | Audit completo |
| X-Content-Type-Options assente | L’header che impedisce ai browser di indovinare il tipo di file | 2 | Audit completo |
| Referrer-Policy assente | Il controllo su quanta parte dei tuoi indirizzi viene condivisa con altri siti | 1 | Audit completo |
| Permissions-Policy assente | Limiti su fotocamera, microfono, posizione e funzioni simili | 1 | Audit completo |
Sicurezza — certificato, dominio ed email (solo sul tuo dominio)
| Controllo | Cosa guardiamo | Punti | Dove |
|---|---|---|---|
| TLS obsoleto o certificato in scadenza | Cifratura precedente a TLS 1.2, o un certificato che scade entro 30 giorni | 12 | Audit completo |
| Record SPF assente | Quali server possono inviare email per il tuo dominio | 6 | Audit completo |
| Record DMARC assente | La tua policy contro l’impersonificazione via email | 6 | Audit completo |
| DMARC solo in osservazione | Una policy DMARC che osserva ma non blocca (p=none) | 3 | Audit completo |
| Il dominio non riceve email | Nessun server di posta pubblicato per il tuo dominio | 2 | Audit completo |
| Record CAA assente | Quali autorità possono emettere certificati per il tuo dominio | 1 | Audit completo |
Performance
| Misura | Cosa misuriamo | Buono → scarso |
|---|---|---|
| Tempo di risposta del server (40%) | Il tempo prima che il server inizi a rispondere | sotto 200 ms → oltre 800 ms |
| Peso del JavaScript (30%) | La dimensione totale dei tuoi script | sotto 300 KB → oltre 1,5 MB |
| File JavaScript (10%) | Quanti file di script tuoi vengono caricati | 3 o meno → 20 o più |
| Peso dell’HTML (10%) | La dimensione del markup della home page | sotto 15 KB → oltre 100 KB |
| Rendering lato server (10%) | Se il contenuto è già nell’HTML | sì = 100 · no = 60 |
Accessibilità
| Controllo | Perché conta | Peso |
|---|---|---|
| Le immagini hanno un testo alternativo | Gli screen reader possono descriverle | Alto ×3 |
| I campi dei moduli hanno un’etichetta | Chi compila sa cosa scrivere | Alto ×3 |
| I pulsanti hanno un nome | Anche i pulsanti con sola icona vengono letti | Alto ×3 |
| I link hanno un testo leggibile | Si capisce dove porta il link | Medio ×2 |
| La pagina dichiara la sua lingua | Il testo viene letto con la pronuncia giusta | Medio ×2 |
| I livelli dei titoli non saltano | La struttura della pagina è navigabile | Basso ×1 |
SEO
| Controllo | Punti |
|---|---|
| La pagina chiede ai motori di ricerca di non indicizzarla | −40 |
| Titolo assente | −15 |
| Impostazione viewport per mobile assente | −12 |
| Meta description assente | −10 |
| Nessun titolo principale (H1) | −10 |
| Nessun link canonical | −5 |
| Più di un H1 | −5 |
| Nessuna anteprima social (Open Graph) | −5 |
| Titolo più corto di 10 o più lungo di 60 caratteri | −4 |
| Descrizione più corta di 50 o più lunga di 160 caratteri | −4 |
robots.txt assente o vuoto | −3 |
| Nessuna sitemap trovata | −3 |
| Alternative di lingua (hreflang) incomplete | −3 |
Privacy e tecnologia (senza punteggio)
- Tracker prima del consenso — tracker pubblicitari e di analisi (Google, Meta, Hotjar, TikTok, LinkedIn, X, Pinterest, Snapchat, Microsoft Clarity, Yandex) che si caricano prima che il visitatore possa acconsentire. Mostrato nel referto gratuito.
- Strumento di consenso ai cookie — se è presente un banner di consenso riconosciuto.
- Link alla privacy policy — se la home page ne collega una.
- Panoramica tecnologica — framework, hosting, strumenti di analisi e numero di servizi esterni. Contesto per la migrazione, non un problema in sé.
Cosa un check automatico non può vedere#
Il check gratuito guarda solo la tua home page, da fuori. Non vede le aree con login, le altre pagine, le regole del tuo database, le query lente o come il tuo codice tratta i dati. Dove un controllo dipende da contenuti che compaiono solo dopo l’esecuzione del JavaScript, scriviamo «non misurato» invece di tirare a indovinare. L’audit completo copre ciò che il check gratuito non vede: lo svolge il nostro team, con l’accesso che ci concedi, tabella per tabella — e anche lì non leggiamo mai i tuoi dati.
Domande frequenti#
Il check rallenta il mio sito?
No. È una sola visita breve, con un limite fisso di tempo e di dimensione: paragonabile a un visitatore che apre la tua home page.
Avete trovato la chiave del mio database. Qualcuno ha avuto accesso ai miei dati?
Noi no. Segnaliamo che la chiave è visibile nel tuo codice pubblico; non la usiamo mai. Se sia un rischio reale dipende dalle impostazioni di row-level security, che l’audit completo verifica.
Perché il mio punteggio è più basso del previsto?
Ogni problema toglie punti, e quelli gravi ne tolgono molti: una sola chiave segreta esposta vale 40 punti. Anche i problemi non mostrati nel referto gratuito contano; il referto ti dice quanti sono.
Posso impedire allo scanner di controllare il mio sito?
Sì. Aggiungi User-agent: Root92-MigrationScanner e Disallow: / al tuo robots.txt, oppure vedi https://webappscanner.root92.com/about-scanner.
Cosa conservate dopo il check?
Solo i risultati, mai il contenuto delle tue pagine. Se non ci lasci la tua email, non conserviamo nessun contatto. Dettagli e tempi di conservazione sono nell’informativa privacy (https://webappscanner.root92.com/privacy).