È davvero sicuro conservare le chiavi API nelle variabili di ambiente?

13

Questo sito dice che è meglio mantenere le chiavi API nella variabile d'ambiente fuori dal codice. E qui

Storing Credentials Securely

You should take great care to ensure your credentials are stored securely. If someone obtains your api_key or an access_token with the send or all permission, they will be able to send all the bitcoin out of your account.

In particular, you should avoid storing these credentials in your code base (which gets added to version control) or in your database unless you have encrypted them securely. Separating credentials from your code base and database is a good practice.

API key access is turned off by default on all accounts. So if you decide to do an API key integration, you will need to enable it first and take the necessary steps from then on to store it securely. You can always regenerate your API key (or disable it) if you feel it has been compromised.

Tuttavia, ogni volta che un programma si arresta, spesso invia l'ambiente come parte del rapporto sugli arresti anomali:

link

Environment Variables: ...

Quindi ... quale è? Non vedo perché la memorizzazione delle chiavi nell'ambiente sia più sicura del codice sorgente. Se qualcuno arriva al sistema, ha accesso a entrambi.

    
posta Chloe 01.02.2014 - 08:22
fonte

2 risposte

11

Se il tuo computer è in grado di utilizzare l'API senza password, le informazioni devono essere memorizzate da qualche parte nel tuo sistema. Il punto di immagazzinarlo nella variabile di ambiente è di farlo in modo che tu non lo controlli nel controllo della versione insieme all'origine, comunque, l'ideale sarebbe usare qualcosa come un HSM o TPM per memorizzare l'API digitare in modo crittografato che è possibile recuperare a livello di programmazione o memorizzarlo su disco crittografato con le credenziali dell'account per il servizio o l'applicazione che lo utilizza.

Personalmente sarei riluttante a usare le variabili di ambiente, ma se sei preoccupato solo di rivelare accidentalmente la chiave (e non la sicurezza locale per qualcuno che ha accesso alla tua scatola), allora è una opzione su come separare il codice e le chiavi , solo non il migliore.

    
risposta data 01.02.2014 - 16:57
fonte
1

L'uso di variabili d'ambiente potrebbe essere un consiglio eccezionalmente scorretto. Come noti te stesso, le variabili d'ambiente possono essere rivelate in determinate circostanze, e all'interno del mondo PHP, ad esempio, una pagina phpinfo che ti potrebbe essere chiesto di fornire come parte di un processo di supporto a una terza parte lo farebbe. Considerare anche come e quando impostare la variabile di ambiente. Se è impostato all'avvio del server Web, la variabile potrebbe essere visibile per qualsiasi script che viene eseguito. Quando un hacker sfrutta la debolezza di un sito per depositare uno script arbitrario che può eseguire (le stime recenti dicono che le decine di migliaia di siti vengono violati ogni giorno), potrebbero essere in grado di ottenere la chiave in pochi secondi. Se invece la chiave è impostata da un file all'interno di una singola e idealmente oscura parte della base di codice, e forse dal codice protetto o nativo, potrebbe volerci molto più tempo prima che l'hacker possa identificare la chiave. Se si dispone di un buon rilevamento delle intrusioni, esistono anche buone probabilità che siano in grado di bloccarle prima che siano state in grado di analizzare il sito per individuare dove è impostata la chiave. Divulgazione: sono associato a ionCube.

    
risposta data 02.02.2014 - 14:07
fonte

Leggi altre domande sui tag