È brutto usare il POST solo su un'API?

6

Sto per sviluppare una nuova API per il nostro sito web. Parte del progetto ho preso in considerazione l'utilizzo dei metodi POST e GET ma dopo aver letto alcune informazioni sulla sicurezza mi rendo conto che GET è un po 'meno sicuro (cioè consente l'hotlinking) rispetto al POST.

Quindi la mia domanda è: perché le persone usano GET in un'API se sono meno sicure? È solo una concezione legacy che "GET" dovrebbe essere usato per leggere e POST per scrivere (cioè i moduli). Il metodo GET ha ancora senso per me per un URL dell'immagine o una pagina del sito Web che puoi aggiungere ai segnalibri, ma ha senso per un'API? L'utilizzo dello stesso metodo (ad esempio POST) renderebbe l'API più coerente anche perché non devi preoccuparti del metodo.

Devo dire che non voglio discutere contro la cosa HATEOS / RESTful perché sto pianificando una API RPC (ad esempio Twitter, Facebook, ecc.)

    
posta The user with no hat 22.03.2015 - 04:18
fonte

1 risposta

3

So my question is why people use GET in an API if is less secure?

Le persone spesso pensano che l'utilizzo delle richieste POST sia una soluzione a CSRF ma le richieste POST sono ancora vulnerabili e se la prevenzione CSRF è il tuo obiettivo, allora dovresti implementare un Token CSRF .

Tuttavia, CSRF non è solitamente considerato una minaccia per un'API perché la premessa fondamentale di un attacco CSRF (ovvero un sito che effettua una richiesta a un'altra senza azione umana) è in realtà l'intenzione. Per dare un esempio molto semplice, un sito dannoso che invia un modulo a mybank.com/transfermoney funziona perché l'utente ha già un cookie di autenticazione impostato su mybank.com. Tuttavia, se è stata inoltrata una richiesta AJAX a mybank.com/transfermoney, non funzionerebbe perché il cookie non verrà inviato e quindi l'utente non sarà già autenticato.

Per autenticare con un'API di solito devi passare qualcosa come un token / chiave di autenticazione che un utente malintenzionato dovrebbe conoscere, rispetto all'altro esempio in cui l'utente malintenzionato non doveva conoscere il valore del cookie per richiamare un'azione autenticata .

Per quanto riguarda GET vs. POST, se stai cercando di ottenere un'interfaccia RESTful, GET e POST hanno funzioni diverse. GET dovrebbe essere usato per recuperare (leggere) una risorsa, mentre il POST dovrebbe essere usato per inviarne uno nuovo.

    
risposta data 22.03.2015 - 06:32
fonte

Leggi altre domande sui tag