La capacità incorporata di Django di inviare email agli amministratori in caso di errori (vedere https://docs.djangoproject.com/en/dev/howto/error-reporting/) è molto utile.Messaggi di errore di Django che inviano email: informazioni sulle perdite di env vars
Tuttavia, queste e-mail di traceback includono un dump completo di variabili di ambiente.
E come consigliato nella documentazione Django & altrove (ad esempio https://docs.djangoproject.com/en/dev/howto/deployment/checklist/) ho spostato alcuni segreti/chiavi/password in variabili d'ambiente come un modo semplice per tenerli lontano dalla base di codice & li variano tra le implementazioni. Sfortunatamente questo significa che quando c'è un rapporto di arresto anomalo questi segreti vengono inviati in chiaro a una serie di account di posta elettronica. Non è una buona pratica.
Il django ExceptionReporter ha un filtro di base per estrarre le impostazioni "pericolose o offensive", ad es. il valore di qualsiasi oggetto in settings.py il cui nome contiene le stringhe "pass" o "chiave" sarà sostituito con **** s. Così una chiave segreta in settings.py viene modificata. Ma questo filtro non è applicato alle variabili di ambiente, che compaiono in entrambe le sezioni Traceback-> Vars locali-> richiesta e Richiesta informazioni-> Meta di questi rapporti di errore.
Ovviamente ci sono altri modi per gestire i segreti ma l'ambiente unix è una soluzione piuttosto comune per i piccoli siti in cui la creazione di un sistema di configurazione più complesso non è giustificata.
Sembra anche problematico che queste due pratiche, entrambe raccomandate nei documenti di base di django, non siano sicure se applicate insieme.
L'invio di e-mail tra le informazioni di debug del sito comporta sempre il rischio di perdita di informazioni, ma questa sembra un'omissione significativa che potrebbe essere risolta dal filtro esteso, forse controllato da alcune impostazioni.
Qualcuno ha già applicato patch (presumibilmente espandendo il filtro in django/views/debug.py) per la loro implementazione e/o ha inviato una patch al team di django? O mi manca qualche altro modo ovvio per affrontare questo?
Tutti i punti validi.Hai trovato una soluzione migliore? – Medorator
Siamo spiacenti, ma no. Ho deciso di non utilizzare la segnalazione automatica degli errori come soluzione alternativa. Credo che il team di django abbia preso una segnalazione di errore per aggiornare i documenti per non consigliare la combinazione di queste due impostazioni, ma è andata così. Hmm, forse dovrei tornare indietro e creare e presentare una patch effettiva ... – geewiz