Mi avvicino a un punto in cui distribuirò la mia applicazione Django all'ambiente ostile altrimenti noto come "Internet" e sto cercando di capire meglio le ramificazioni del Django SECRET_KEY
. Una delle procedure standard che sembra è quella di proteggere la chiave segreta in settings.py
. Giusto. I documenti vanno così lontano da dire di non impegnare la tua chiave segreta in SVN, CVS, ecc ... Per questo fornisce un facile accesso alla tua chiave. Tuttavia, se qualcuno fosse tentato di eseguire il commit della chiave segreta, ciò indicherebbe che la chiave segreta è statica (vedi domanda n. 4)?
Ad ogni modo, ecco le mie domande:
- In che modo la memorizzazione della chiave segreta come variabile d'ambiente è più sicura rispetto all'archiviazione diretta in
settings.py
? Ad esempio, se un utente malintenzionato può leggeresettings.py
, è più che probabile che digiti$ echo $DJANGO_SECRET_KEY
! - In che modo la memorizzazione della chiave segreta in un file è più sicura rispetto alla memorizzazione diretta in
settings.py
? Se può leggeresettings.py
, probabilmente può leggeredjango_secret_key.txt
. - Se l'utente malintenzionato ha compromesso la tua macchina, non può semplicemente caricare l'interprete python con
settings.py
in> print settings.SECRET_KEY
? - Infine, sarebbe una cattiva pratica generare in modo casuale la chiave segreta ogni volta che viene riavviato il processo del server web? Questo potrebbe essere completamente casuale, o potrebbe richiedere l'input dell'utente per la chiave. Ovviamente, quest'ultimo presenta una grave debolezza se l'autore dell'attacco può riavviare il webservice e inserire la chiave di sua scelta.