Non pubblicabile — T-01
Questa pagina contiene ancora dei segnaposto non compilati. Si consegna così di proposito: il codice è finito, il testo legale no. Voci aperte:
- T-01
Che cos’è questo scanner
Se sei qui, probabilmente hai trovato questa riga nei tuoi log di accesso:
Root92-MigrationScanner/1.0 (+http://134.122.72.232/about-scanner)
Siamo noi. Questa pagina spiega esattamente cosa ha fatto quella richiesta, e come fermarla. Si legge in un minuto, e se ti interessa solo l’ultima cosa c’è una sezione «come farci smettere» in fondo.
Chi siamo
Root92. Migriamo applicazioni costruite su Lovable verso codice che il proprietario controlla davvero.
Il check gratuito di superficie è il modo in cui quella conversazione comincia: il proprietario di un’app incolla il suo indirizzo, spunta una casella in cui conferma di esserne il proprietario o di essere autorizzato a farla analizzare, e riceve un referto su cosa si vede da fuori. Non c’è nessun crawler, nessuna lista, nessuna scoperta automatica. Guardiamo solo un indirizzo che qualcuno ha scritto di persona.
Riferimenti legali: TODO(gabriel) T-01 — ragione sociale, partita IVA, sede legale.
Cosa leggiamo dal tuo server
In una sessione sola, dentro un budget totale di 20 secondi e 20 MB su tutto:
/robots.txt, per primo, prima di qualunque altra cosa.- L’HTML della homepage.
- Fino a 40 bundle JavaScript di prima parte, quelli che il markup dichiara da sé — con
<script src>,<link rel="modulepreload">o<link rel="preload" as="script">. Gli script di terze parti non li scarichiamo: non sono roba del proprietario. - Una richiesta
HEAD— solo header, mai il corpo — su/.env, su/.git/config, e su ogni file.mapche un bundle già scaricato dichiara da sé.
Di tutto questo teniamo dei metadati: quale builder ha prodotto il sito, se c’è un backend referenziato, quali header di sicurezza c’erano, dimensioni e tempi. Non conserviamo il contenuto delle pagine.
Cosa non leggiamo mai
- Non leggiamo mai dati dal tuo database. Nemmeno una riga, nemmeno un conteggio, nemmeno «solo per vedere se risponde».
- Non usiamo mai una chiave o un token che troviamo. Una chiave pubblica trovata in un bundle si decodifica e si riporta; non viene mai presentata al tuo backend, in nessuna forma.
- Non scarichiamo mai il corpo di
/.envo/.git/config, nemmeno quando rispondono200. Registriamo lo status code e chiudiamo la connessione. La finding è «è raggiungibile», e non ha un campo per il contenuto. - Non scarichiamo mai le source map. Verifichiamo solo che esistano.
- Non tiriamo mai a indovinare. Nessuna wordlist, nessun
/.env.local, nessun/backup.zip, nessun nome di tabella. I percorsi qui sopra sono l’elenco completo. - Non scriviamo mai niente da nessuna parte.
- Non travestiamo mai la richiesta. Lo user-agent qui sopra è l’unico che usiamo.
Con che diritto
Perché il proprietario dell’applicazione ce l’ha chiesto, un indirizzo alla volta, con una spunta, prima che partisse la prima richiesta.
Quel consenso è registrato insieme alla versione del testo con cui è stato dato, ed è l’unica cosa che fa partire uno scan. Non esiste un percorso di codice che scansioni qualcosa fuori da quel form: nessun batch, nessuna lista, nessun job programmato, nemmeno in sviluppo.
Se stai leggendo questa pagina e non sei tu che hai chiesto, allora qualcuno ha inserito un indirizzo che non era suo. Diccelo all’indirizzo qui sotto e ce ne occupiamo.
Quanto carico ti costa
Deliberatamente poco, perché uno strumento che stressa il sito che sta controllando sarebbe lo strumento sbagliato.
- Una sessione per check, con un tetto di 20 secondi e 20 MB in totale — non per richiesta. Quando il budget finisce lo scan si ferma e riporta quello che è riuscito a stabilire.
- Al massimo 40 bundle.
- Al massimo 3 check all’ora verso lo stesso hostname, chiunque li chieda, e 20 all’ora dallo stesso mittente. Un check può valere fino a due sessioni di scan: il referto si calcola quando l’indirizzo viene inviato, e si ricalcola se poi quella persona chiede di essere ricontattata, così quello salvato è fresco. Per questo in un’ora puoi vederne fino a 6 e non 3. Il tetto segue i redirect: se l’indirizzo che ci hanno dato rimanda al tuo, è il tuo hostname a essere contato.
Come farci smettere
Due strade, e non ce n’è una terza.
Mettici nel tuo robots.txt. Lo leggiamo prima della homepage e lo rispettiamo — se il percorso è vietato al nostro token non lo chiediamo, e il check si chiude come bloccato senza aver raccolto niente:
User-agent: Root92-MigrationScannerDisallow: /
Oppure scrivici e blocchiamo l’indirizzo dalla nostra parte: TODO(gabriel) T-01 — indirizzo di contatto.
Se una nostra richiesta ti ha creato un problema vero, dillo in quella email. Preferiamo saperlo che non saperlo.