
Uno strumento per esplorare i datastore Firebase.

Uno strumento per esplorare e sfruttare i datastore Firebase. Vedi questo post sul nostro blog per una panoramica su come funziona Firebase e perché abbiamo sviluppato questo strumento.
git clone https://github.com/iosiro/baserunner.gitcd baserunnernpm installnpm run buildnpm startL'interfaccia di Baserunner ha questo aspetto:

Per prima cosa, usa la casella di testo di configurazione per caricare una struttura JSON di configurazione Firebase dall'app che desideri testare. Ha questo aspetto:
{
"apiKey": "API_KEY",
"authDomain": "PROJECT_ID.firebaseapp.com",
"databaseURL": "https://PROJECT_ID.firebaseio.com",
"projectId": "PROJECT_ID",
"storageBucket": "PROJECT_ID.appspot.com",
"messagingSenderId": "SENDER_ID",
"appId": "APP_ID",
"measurementId": "G-MEASUREMENT_ID",
"databaseURL": "https://PROJECT_ID.firebasedatabase.app/"
}
Quindi accedi come utente normale, con email e password o con un numero di telefono. Quando accedi con un numero di telefono, completa il CAPTCHA prima di inviare il numero. Ti verrà quindi richiesto un OTP dal tuo SMS. Inseriscilo senza completare il CAPTCHA per completare l'accesso. Nota che puoi saltare questo passaggio per testare le query senza autenticazione.
Infine, puoi usare l'interfaccia delle query per inviare query a Cloud Firestore, Realtime Database e Firebase Storage dell'applicazione. Baserunner fornisce una serie di query template per azioni comuni. Fai clic su una di esse per caricarla nella casella di testo e sostituisci i valori che assomigliano a ==LIKE THIS== con nomi validi di collezioni, ID, campi, percorsi di file, ecc.
Poiché non è possibile ottenere un elenco delle collezioni disponibili utilizzando l'SDK JavaScript di Firebase, dovrai indovinarle o ricavare i loro nomi dal JavaScript front-end dell'applicazione target.
Baserunner può anche interrogare i bucket di Firebase Storage. Attualmente, lo strumento supporta la lista delle directory e il download di file. Per utilizzarlo, assicurati che la configurazione Firebase includa un campo storageBucket. Le operazioni di storage funzioneranno con la stessa autenticazione delle tue query al database.
Come faccio a sapere se un'app utilizza Cloud Firestore o Realtime Database?
Le applicazioni che utilizzano Realtime Database avranno una chiave databaseURL nei loro oggetti di configurazione. Le applicazioni senza questa chiave possono essere considerate come utilizzanti Cloud Firestore. Nota che è possibile che le applicazioni Firebase utilizzino entrambi i datastore, quindi in caso di dubbio, esegui entrambi i tipi di query.
Vengo bloccato da CORS!
Per funzionare come previsto, Baserunner si aspetta che le applicazioni accettino richieste da localhost, il che è abilitato per impostazione predefinita. Pertanto, Baserunner non può essere utilizzato come applicazione ospitata.
Se le richieste da localhost non sono consentite dall'applicazione che stai testando, una versione di Baserunner con un set di funzionalità ridotto può comunque essere eseguita aprendo dist/index.html nel tuo browser. Nota che questa modalità di esecuzione di Baserunner supporta solo l'accesso con email + password e non l'accesso telefonico.
Come faccio a sapere quali collezioni interrogare?
Cloud Firestore: Per motivi di sicurezza, l'API JavaScript lato client di Firebase non fornisce un meccanismo per elencare le collezioni. Dovrai dedurle esaminando il codice JavaScript dell'applicazione target e facendo ipotesi plausibili.
Realtime Database: Poiché questo datastore è rappresentato come un oggetto JSON, puoi usare la query "[Realtime Database] Leggi datastore" fornita per tentare di visualizzare l'intero contenuto. Nota che potrebbe fallire a seconda delle regole configurate.
Come faccio a sapere quali file ci sono in Firebase Storage?
Prova prima a elencare la radice (/). Se è protetta, guarda a quali file sta accedendo l'app che stai testando. Potresti provare cartelle come /uploads o /images.
Posso vedere i risultati delle query precedenti?
Sebbene solo l'ultimo risultato della query venga visualizzato sulla pagina di Baserunner, tutti i risultati vengono registrati nella console del browser.
Quando eseguo query Realtime Database, ricevo un errore che dice che il client è offline.
Prova a rieseguire la query.
Come faccio ad accedere con Google?
Trova l'ID client OAuth di Google dell'app (ad es. NUMERIC_STR-ALPHANUMERIC_STR.apps.googleusercontent.com). Puoi farlo cliccando su "Accedi con Google" sul sito, ispezionando l'HTML e cercando apps.googleusercontent.com.
Modifica il file DNS (/etc/hosts su Linux e macOS, C:\Windows\system32\drivers\etc\hosts su Windows) e aggiungi la seguente riga:
127.0.0.1 PROJECT_ID.firebaseapp.com
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./selfsigned.key -out selfsigned.crt
Ai prompt, puoi lasciare tutti i campi vuoti tranne Common Name (e.g. server FQDN or YOUR name) [], che dovresti impostare su PROJECT_ID.firebaseapp.com.
PROJECT_ID.firebaseapp.com dalle impostazioni del browser (in alternativa, usa un browser nuovo) per evitare che il browser blocchi la connessione a causa di una discrepanza del certificato (HSTS).Se usi DNS-over-TLS o DNS-over-HTTPS sul browser che stai utilizzando per Baserunner, disabilitalo temporaneamente per falsificare l'origine richiesta per l'accesso con Google su Firebase.
Esegui Baserunner usando npm run startssl e poi carica https://PROJECT_ID.firebaseapp.com nel tuo browser.
Inserisci l'ID client OAuth di Google trovato al punto 1 nel campo sotto "Accedi con Google" e fai clic su "Imposta ID client Google".
Fai clic sul pulsante di accesso con Google e accedi utilizzando l'account Google con cui ti sei registrato per l'app.
Fai clic sul pulsante "Imposta login Google".
Esplora il database come faresti con un account non Google.
Quando hai terminato i test di sicurezza, rimuovi la riga del punto 2 dal tuo file DNS.