La semplice autenticazione è sicura se su HTTPS?

1

Sfondo
Per la mia app ho bisogno di sapere se gli utenti hanno inserito la combinazione di password email corretta. Roba abbastanza comune. Sto utilizzando HTTPS e salendo e eseguendo l'hashing delle password.

Domanda
Ora, quello che mi chiedo è se dovessi rispondere letteralmente dal mio server con JSON che dice successfulLogin:true / successfulLogin:false ?

I miei pensieri
A me sembra giusto, ma non sono sicuro che sarebbe facile per qualcuno falsificare e inviare. Qualcos'altro che sto facendo è che sto inviando una chiave con il POST in modo che lo script PHP venga eseguito solo se la sua chiave e quella chiave corrispondono.

    
posta Dallas 13.07.2016 - 06:49
fonte

1 risposta

2

Autenticazione

Il server deve occuparsi dello stato (ad es. l'utente ha effettuato l'accesso o meno), non il client. Benché sia perfettamente corretto inviare a JSON informazioni sullo stato (ad esempio, si è effettuato l'accesso) tramite HTTPS, è il server che deve ricordare se l'utente in particolare è connesso o meno. Il server non può mai fidarsi del client.

Il modo in cui lo fai è usare una variabile di sessione sul server, cioè una variabile collegata a questo particolare utente, che tiene traccia su se è loggato o meno:

$_SESSION["loggedin"] = true;

Quindi ogni volta che l'utente richiede informazioni che dovrebbero essere disponibili solo per gli utenti registrati, è necessario verificare che questa variabile di sessione sia effettivamente vera. In questo modo non importa se qualcuno ha manipolato la tua risposta JSON - a meno che non abbiano fornito la password corretta il server non li visualizzerà come se fosse loggato.

Maggiori informazioni sulle sessioni in PHP qui e qui .

Un'altra cosa: se il tuo cliente detiene dati sensibili che non dovrebbero essere resi disponibili all'utente senza che il server la autentichi, allora questa è una situazione abbastanza diversa e dovresti prendere ulteriori precauzioni. Lo stesso vale se il client esegue azioni per conto dell'utente.

Invio di chiave nel POST

Something else I am doing is that I'm sending a key with the POST so that the PHP script will only run if its key and that key match.

Non sei sicuro di cosa stai dicendo qui. Questo potrebbe essere completamente superfluo, ma non sono sicuro di averlo capito correttamente.

Rotolare il proprio

Ricorda che fare un sistema di autenticazione completo non è facile. Ci sono molte insidie oltre a quelle trattate in questo post. Invece di eseguire il rollover, ti suggerirei di controllare se esiste un framework PHP esistente che puoi usare.

    
risposta data 13.07.2016 - 09:43
fonte

Leggi altre domande sui tag