GET vs POST, che è più sicuro? [duplicare]

6

Ho sentito parlare della differenza programmatica b / w GET e POST nelle applicazioni web. Chiedendo curiosità che è più sicuro, metodo GET o metodo POST nelle applicazioni web, mi aspetto risposte anche in termini di protocolli (cioè in http e https )?

    
posta BlueBerry - Vignesh4303 06.04.2013 - 10:21
fonte

3 risposte

17

POST è più sicuro di GET per un paio di motivi.

I parametri GET vengono passati tramite URL. Ciò significa che i parametri sono memorizzati nei log del server e nella cronologia del browser. Quando si utilizza GET, è molto semplice modificare i dati inviati anche al server, poiché è proprio lì nella barra degli indirizzi con cui giocare.

Il problema nel confrontare la sicurezza tra i due è che il POST può scoraggiare l'utente casuale, ma non farà nulla per fermare qualcuno con intenzioni malevole. È molto facile falsificare le richieste POST e non dovrebbe essere considerato attendibile.

Il più grande problema di sicurezza con GET non è l'intento malevolo dell'utente finale, ma una terza parte che invia un link all'utente finale. Non posso inviarti tramite email un link che costringerà una richiesta POST, ma posso sicuramente inviarti un link con una richiesta GET dannosa. Cioè:

Fai clic qui per i migliori film gratuiti!

Modifica:

Volevo solo menzionare che probabilmente dovresti usare POST per la maggior parte dei tuoi dati. Vorresti utilizzare GET solo per i parametri che dovrebbero essere condivisi con altri, ovvero: /viewprofile.php?id=1234, /googlemaps.php?lat=xxxxxxx&lon=xxxxxxx

    
risposta data 06.04.2013 - 11:49
fonte
4

POST mette semplicemente le informazioni in una posizione diversa (richiesta corpo del messaggio) rispetto a GET (url). Alcune persone si sentono come quest'ultimo espone più informazioni, il che è vero per alcuni punti (leggi nella modifica). Da un punto in cui un utente malintenzionato vorrebbe intercettare il traffico, POST sarebbe ugualmente difficile / facile per un utente malintenzionato come per un GET.

Se si desidera la sicurezza in modo che la richiesta non venga esposta quando lascia i punti di fine e di inizio, utilizzare SSL (https).

Modifica

Un punto valido di Gumbo e Ladadada, la registrazione delle richieste GET può avvenire più frequentemente rispetto alle richieste POST. Ad esempio nella cronologia di un browser (se condividi quel browser con qualcun altro).

Quindi questo significa che non dovresti inserire dati sensibili in una richiesta GET poiché una richiesta GET potrebbe essere esposta a persone che stanno guardando lo schermo.

    
risposta data 06.04.2013 - 10:49
fonte
0

Come dice @Gumbo, gli URL vengono registrati e appaiono in più posti, pertanto le richieste GET sono un po 'più insicure delle richieste POST. Il punto è che molte persone pensano che le richieste POST siano molto più sicure delle richieste GET perché possono vedere i dati direttamente nell'URL ma usando, ad esempio, un software proxy che intercetta le richieste del browser chiunque può visualizzare e modificare i dati POST.

Un altro punto è che devi pensare a dove usi GET e POST perché GET dovrebbe essere usato solo per operazioni che non alterano le informazioni del database , solo richieste o informazioni di lettura e i dati POST dovrebbero essere usato quando i dati verranno modificati. Alcuni web scanner fanno clic su ogni collegamento automaticamente (di solito richieste GET) e non su pulsanti o moduli (di solito richieste POSTS) evitando di alterare il database ma se per esempio si inserisce un'operazione di eliminazione dopo un collegamento si corre il rischio di fare clic sul collegamento con più strumenti automatizzati più facilmente.

Ovviamente, anche gli scanner web possono "fare clic" o seguire pulsanti e moduli ma di solito differiscono e questo comportamento potrebbe essere modificato per spiderare il Web in sicurezza.

    
risposta data 06.04.2013 - 11:54
fonte

Leggi altre domande sui tag