Il POST HTTP è più sicuro di HTTP GET per AJAX?

1

Tutte le considerazioni su HTTPS / SSL, ecc. a parte, se il mio utente compila un modulo e io lo invio da AJAX, mi mi sembra che POST & GET è ugualmente intercettabile, sebbene GET sia un bit teensy più trasparente.

Esistono motivi tecnici validi per preferire il POST?

    
posta Mawg 07.07.2016 - 08:56
fonte

3 risposte

6

Dovresti usare il POST per qualsiasi azione che cambi lo stato. Se salvi il contenuto del modulo o utilizzi il modulo per inviare una e-mail, dovresti utilizzare un POST.

Ci sono diversi motivi per cui questo è più sicuro:

  • CSRF è più semplice con le richieste GET che con le richieste POST. Con le richieste GET puoi semplicemente inviare a qualcuno un link. Con una richiesta POST, un utente malintenzionato deve avere una pagina HTML creata. Quando il tuo framework ha una protezione CSRF, questo è in genere attivo solo sui requisisti POST.
  • La politica del browser è diversa per le richieste POST. Ad esempio, si ottiene una finestra di dialogo di conferma se si tenta di ricaricare la pagina. Un esempio di dove questo si applica alla sicurezza è cookie sullo stesso sito . Con l'impostazione "lax", le richieste POST sono bloccate per l'origine incrociata e le richieste GET non lo sono.

Vedi anche questa risposta .

    
risposta data 07.07.2016 - 09:06
fonte
0

È possibile visualizzare GET Request Parameters (stringa di query) nella barra degli indirizzi del browser Web

Quindi non vuoi finire così

http://www.mysupersecuresite.com/login.php?name=me&password=mycoolpassword

    
risposta data 07.07.2016 - 12:15
fonte
0

Is there any sound technical reason to prefer POST?

Sì, se c'è un "cambio di stato", allora non dovrebbe essere usato un metodo sicuro.

Vedi RFC7231 :

Request methods are considered "safe" if their defined semantics are
essentially read-only; i.e., the client does not request, and does
not expect, any state change on the origin server as a result of
applying a safe method to a target resource ...

the GET, HEAD, OPTIONS, and TRACE methods are defined to be safe.

Anche da un punto di vista della sicurezza è preferibile utilizzare il POST, poiché qualsiasi server proxy aziendale (ovvero quelli con certificati attendibili per l'ispezione TLS / SSL) può registrare i parametri della stringa di query GET per impostazione predefinita (poiché fanno parte dell'URL) e verrà anche memorizzato nei log del server per impostazione predefinita.

L'uso del POST significa che questi valori hanno meno probabilità di perdere posti che non ti aspetti.

    
risposta data 08.07.2016 - 10:28
fonte

Leggi altre domande sui tag