I servizi web JSON sono vulnerabili agli attacchi CORF?

0

Un servizio Web è vulnerabile all'attacco CSRF se sono vere le seguenti?

  • GET / OPTION Le richieste sono respinte
  • Token è usato per l'autenticazione, senza token non possiamo accedere all'applicazione
  • Access-Control-Allow-Origin: * is set

Sto creando un servizio Web che utilizza esclusivamente JSON per i suoi contenuti di richiesta e risposta

    
posta Mohammed Farhan 08.11.2017 - 16:34
fonte

2 risposte

1

Questo non è vulnerabile se il tipo di contenuto accetta solo application / json perché non puoi creare un modulo html che pubblichi quel tipo di contenuto, e questo è quello che avresti bisogno di fare csrf se non puoi usare ajax, che non puoi con il precedente Intestazione CORS. Inoltre, se il token si trova nell'intestazione dell'autorizzazione, non è vulnerabile perché non verrà inviato in un attacco csrf.

    
risposta data 10.11.2017 - 06:10
fonte
0

Il tuo Access-Control-Allow-Origin verrebbe controllato con una richiesta OPTIONS , che è stata rifiutata, quindi XHR non è possibile.

In generale, la risposta di joe è corretta, ma tieni presente che è fondamentale avere il tipo di contenuto della richiesta essendo controllato dal servizio web come application/json . Perché è effettivamente possibile inviare dati JSON validi tramite modulo sfruttando l'attributo enctype="text/plain" .

Funziona con Chrome (per quanto ne so, dipende dal browser come gestire il testo / tipo di contenuto semplice):

<form action="https://example.com" method="post" enctype="text/plain">
    <input type="hidden" name='{"foo": "bar", "ignored-by-backend":"' value='"}'>
    <button>submit</button>
</form>

Il browser concatena il nome e il valore separati da un carattere = . I dati JSON inviati al servizio web hanno il seguente aspetto:

{"foo": "bar", "ignored-by-backend":"="}

Si noti inoltre che esiste una bozza per consentire enctype="application/json" , tuttavia non viene più mantenuto e per quanto ne so attualmente nessun browser lo implementa . Ma non possiamo sapere se sarà possibile un giorno.

    
risposta data 14.09.2018 - 07:38
fonte

Leggi altre domande sui tag