2011-11-07 10 views
7

Sto scrivendo un'app Web in Django che si interfaccia con l'API Read it Later List (http://readitlaterlist.com/api/docs/). Tuttavia, tutte le chiamate API richiedono l'invio del nome utente e della password per ogni richiesta. Per fare questo, sembra che ho bisogno di memorizzare la password dell'utente in testo normale nel mio database. Mi manca qualcosa o è l'unico approccio possibile in questo caso? C'è un modo per memorizzare una password crittografata nel mio database, ma essere ancora in grado di inviare una versione decodificata di esso quando si effettua la chiamata API? In caso contrario, ci sono le migliori pratiche che dovrei seguire per salvaguardare la password dell'utente?Qual è il modo migliore per memorizzare la password nel database quando la chiamata API richiede l'invio di password in formato testo?

Sono sicuro che questo non può essere l'unico servizio che richiede l'invio di password in testo semplice. Sono interessato a sapere in che modo gli sviluppatori gestiscono questi tipi di servizi in generale. Sono nuovo allo sviluppo web, quindi ogni aiuto o suggerimento è apprezzato.

+0

Ho fatto una domanda simile: http://stackoverflow.com/questions/5791083/django-facebook-security-design-for-a-facebook-webapp-that-performs-a-third –

risposta

4

Non salvare mai la password in testo normale. È possibile crittografare e decrittografare la password, ma il problema è che la chiave che si utilizza per eseguire la crittografia e la decrittografia sarà generalmente accessibile a chiunque abbia ottenuto l'accesso al proprio server in modo che non sia sicuro.

Un'alternativa è chiedere a loro di immettere la password e salvarla in un cookie crittografato, o variabile di sessione o qualcos'altro che scadrà quando si disconnette dall'app. Questo ha l'inconveniente di dover inserire la propria password ogni volta che usano l'app.

+0

Variabile di sessione/cookie crittografati sembra promettente. Vedrò quelli. Grazie. – Alinium

7

i tuoi utenti devono accedere al tuo sito Web per usarlo? se si sta facendo uso di uno schema di autenticazione della password, si potrebbe tornare su quello. Utilizzare la password di accesso per il sito come chiave di crittografia in un codice a chiave simmetrica per crittografare la password API. quindi è necessario solo memorizzare un hash della password degli utenti (sul proprio sito) e una password crittografata per l'API remota.

+0

Questa è una buona idea –

+0

Sembra davvero una buona idea. Non sto usando una password di accesso per il mio sito in questo momento, ma se lo farò in seguito, cercherò sicuramente in questo approccio. – Alinium

Problemi correlati