GET Security over HTTPS [duplicate]

0

Mi chiedo se l'utilizzo del metodo HTTP GET su HTTPS per passare un nome utente e una password a un'applicazione di livello intermedio sia sicuro.

In sostanza sto considerando di utilizzare una dichiarazione di inclusione di PHP per comunicare le informazioni tra il front-end e il server delle applicazioni e penso che queste informazioni non verranno registrate nella cronologia del browser di un utente poiché è un'istruzione di inclusione.

L'alternativa che sto usando è arricciatura e POST, ma è più complessa di una semplice inclusione.

Qualsiasi aiuto su questo sarebbe molto apprezzato.

Dave

    
posta Dave 02.01.2016 - 09:08
fonte

2 risposte

4

Il metodo HTTP GET non dovrebbe mai essere utilizzato per trasmettere informazioni sensibili come le credenziali.

Non vedo perché il metodo HTTP GET sia più semplice dell'uso del metodo HTTP POST, vedi la differenza nel codice qui sotto.

Suggerisco di creare un'API che gestisca l'autenticazione e la comunicazione al server back-end.

Da quando hai menzionato che utilizzerai PHP, dai un'occhiata a questo framework API: link

In teoria, i parametri nell'URL non verranno visualizzati nei file di registro poiché stai utilizzando HTTPS. Tuttavia, vi sono ad esempio i proxy aziendali che eseguono attacchi man in the middle per ispezionare tutto il traffico.

In questi casi, le credenziali appariranno nei registri del proxy e questa è considerata una cattiva pratica.

Ecco un codice PHP (che richiede servizi igienico-sanitari):

<?php

  $username = $_GET['username'];
  $password = $_GET['password'];

?>

Questo esempio è sbagliato perché:

  1. Le informazioni sensibili vengono trasmesse nell'URL
  2. Non è stata eseguita alcuna convalida dell'input

Questo esempio è un po 'migliore, ma richiede comunque di eseguire la convalida dell'input:

<?php

  $username = $_POST['username'];
  $password = $_POST['password'];

?>

Questo è il diverso utilizzo tra il metodo GET HTTP e il metodo POST HTTP usando PHP (e ovviamente il metodo della tua form dovrebbe essere impostato su POST al posto di GET).

    
risposta data 02.01.2016 - 09:34
fonte
0

I am thinking that this information will not be logged into a user's browser history as it is an include statement

Se la password proviene dal browser come parametro GET, sarà disponibile nella cronologia del browser. Se il PHP funge da proxy e aggiunge nome utente e password, non sarà nella cronologia del browser. Tuttavia, l'accesso senza password è ora concesso a chiunque possa indirizzare un browser al sito (in assenza di ulteriori vincoli di sicurezza).

Se il "server delle applicazioni" si trova su un host separato dal codice PHP, allora sì, puoi passare un href alla funzione include per presentare il contenuto al browser, tuttavia:

1) apre un grosso buco di sicurezza nel tuo sistema - se qualcuno può ingannare il tuo codice nella lettura di contenuti da un sito web e il contenuto contiene codice PHP, verrà eseguito

2) puoi solo eseguire operazioni GET e su un singolo tipo di contenuto: tutte le intestazioni del sistema back-end andranno perse.

Se sei felice di aggiungere solo nome utente e password, una soluzione migliore sarebbe farlo con Squid e un redirector URL.

Sarebbe utile sapere cosa stai cercando di ottenere - perché non cambi il codice nel "server delle applicazioni" per gestire l'autenticazione in un modo diverso (ad esempio usando SSO)

    
risposta data 02.01.2016 - 23:28
fonte

Leggi altre domande sui tag