Oggi vi spiegherò come eliminare dati sensibili come password da un repository Github in modo veloce e facile.

Potreste chiedermi:

Per quale motivo hai messo delle password in bella vista su Github?

Effettivamente è una bella domanda.

Il problema

In questi giorni sto sperimentando con qualche script in Python e al momento sto lavorando su uno script che controlla il prezzo su Amazon di un articolo e mi manda un’email se il prezzo scende sotto ad un certo costo.

Per spedire le email sto usando Gmail e come ben saprete, per usare il servizio di Google è necessario inserire username e password.

Il repository che ho creato è privato, quindi solo io posso accederci e vedere il codice, ma nell’ottica di renderlo pubblico è sicuramente consigliabile rimuovere la password del mio account Gmail (nonostante abbia usato una password per le app, anche se ormai l’ho già distrutta).

Come rimediare

  1. Create un file di testo, col nome che volete (esempio passwords.txt), con all’interno le parole chiavi da rimuovere.Importante! Le parole chiavi devono essere 1 per riga.

    pas5word123
    s3cr3t
    c1scol1fe
    
  2. Scaricate lo strumento BFG Repo-Cleaner

  3. Clonate il repo in una cartella (ad esempio C:\TEMP\repo-da-pulire) con il seguente comando:

    git clone --mirror https://github.com/mlazzarotto/amazon-price-scraper.git
    

    (Ovviamente sostituendo l’url con quello del vostro repo.)

  4. Aprite una finestra Prompt o PowerShell e date il seguente comando sostituendo ovviamente il nome del file con le password da rimuovere e la cartella dove avete clonato il repo:

    java -jar d:\mlazz\Downloads\bfg-1.13.0.jar --replace-text passwords.txt my-repo.git
    
  5. Una volta eseguita l’operazione, per applicare le modifiche su Github date il comando seguente:

    cd amazon-price-scraper.git
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
    

In questo modo avrete rimosso tutte le password scomode dal repository di Github e da tutti i commit precedenti.

Questo significa che se qualcuno dovesse andare a controllare la cronologia di tutti i commit precedenti che avete fatto, non troverà la password, ma la parola ***REMOVED***, come potete vedere nell’immagine qui sotto.

Data removed