Come si deve memorizzare una password che deve essere recuperata come testo normale? [duplicare]

3

Ho creato un'API per un sito che non fornisce alcuna forma di API. Perché l'API faccia qualsiasi cosa con l'account, ha bisogno del nome utente e della password in testo semplice.

Come dovrei memorizzare questa password in modo che possa essere fornita all'API?

Dovrebbe essere disponibile per il mio server, che esegue un cronjob ogni ora, che utilizza questa API.

Modifica: ho solo bisogno di memorizzare la mia password per questo sito.

    
posta Tyilo 17.11.2012 - 21:35
fonte

2 risposte

4

Non c'è altra opzione che penso quindi di memorizzare il tuo testo in chiaro della password utente. Se si desidera utilizzare una crittografia, è necessario memorizzare la chiave da qualche parte sul server in modo che lo script del cron job possa accedervi e visualizzarlo. È necessario memorizzare la password in modo semplice, ma assicurarsi che l'unica persona in grado di leggere il file sia l'account in cui viene eseguito lo script. Questo dovrebbe essere un utente separato senza shell il cui unico scopo è quello di eseguire questo script. In questo modo gli unici due utenti che saranno in grado di leggere il file sono l'utente dello script e il superutente sulla macchina.

    
risposta data 17.11.2012 - 21:57
fonte
5

Come memorizzi la password? Con molta attenzione .

In particolare, ti suggerisco di usare un'architettura speciale:

  • Configura una macchina separata, che esisterà solo per la memorizzazione delle password in chiaro. Dovrebbe essere indurito e bloccato il più saldamente possibile. È necessario limitare il numero di amministratori con accesso a questo server. E questo server dovrebbe essere usato solo per questo scopo. Chiamiamo questo "server di login".

  • Il server di login dovrebbe esportare una semplice API, con alcune funzioni: (a) aggiungere una nuova coppia nome utente / password per un sito Web all'archivio password e restituire un handle che lo identifica in modo univoco; (b) accedere al sito di terze parti utilizzando una particolare coppia nome utente / password (come specificato dall'handle), inviare una richiesta particolare e restituire la risposta; (c) cancellare una particolare coppia nome utente / password (identificata dall'handle). Le password devono essere memorizzate sul server di login (non su un database condiviso).

  • Si noti che non esiste alcuna API per esportare una coppia nome utente / password dall'archivio password. Questo è apposta. Il server di login dovrebbe funzionare come Hotel California per le password: le password entrano, ma non escono mai.

  • Il server di login dovrebbe conservare registri dettagliati di tutti gli usi delle sue password. Potresti anche volerlo avere un limite di velocità (ad esempio, notificare a un amministratore se il tasso di utilizzo supera una soglia). E si potrebbe desiderare di avere una garbage collection, in modo che se un nome utente / password non viene utilizzato entro 90 giorni, lo si cancella dall'archivio password, per limitare il numero di vecchie password memorizzate (all'utente può essere richiesto di ri inserisci il loro nome utente / password al prossimo accesso).

Questa architettura isola l'aspetto più critico per la sicurezza in un pezzo separato, il server di login, e cerca di mantenere la sua funzionalità il più semplice possibile, in modo da ridurre al minimo le vulnerabilità di sicurezza che potrebbero consentire l'accesso alle password degli utenti .

In secondo luogo, suggerisco di pianificare un ulteriore livello di revisione e test del codice, data la natura critica del server di accesso:

  • Chiedi a un secondo sviluppatore di rivedere tutto il codice per il server di accesso, per verificare che non contenga vulnerabilità di sicurezza.

  • Considera l'assunzione di qualcuno che esegua un pentest o una revisione del codice di sicurezza del server di login.

Anche se segui tutti questi passaggi, sei ancora soggetto a qualche rischio. Non c'è un proiettile d'argento. Se il server di login viene violato, verranno rivelate tutte le password dei tuoi utenti, il che è molto brutto. Pertanto, sii il più attento possibile.

    
risposta data 18.11.2012 - 07:39
fonte

Leggi altre domande sui tag