Generazione di un token specifico della richiesta per un'API

2

Abbiamo un'API apertamente accessibile attraverso una visualizzazione dei dati su un sito Web e un'app. Vorremmo rendere la vita dei potenziali data scrapers un po 'più difficile.

La prima cosa che abbiamo fatto è stato aggiungere un po 'di throttling, ma nel nostro caso la linea tra il tasso di richiesta legittimo e quello malevolo può essere sfocata. Inoltre, non impedisce agli scraper di prendersi il loro tempo.

Al momento è facile vedere come sono costruite le nostre richieste e crearne di nuove, quindi abbiamo pensato di renderle più difficili generando un qualche tipo di hash usando i valori scelti (parametri della richiesta, ora corrente, valore nel cookie, ecc.) il lato client e controllarlo lato server. Il codice che genera il token dovrebbe naturalmente essere offuscato dal lato client.

Quindi la domanda è: quanto può essere utile una tale protezione? Sembra scendere a quanto possiamo offuscare la generazione di token. Quanto è efficiente questo, in particolare in javascript?

    
posta Jukurrpa 10.10.2017 - 04:21
fonte

1 risposta

1

Penso che non sia terribilmente utile. L'attaccante non deve nemmeno capire la tua offuscazione - se ha accesso alle routine (presumo lo facciano sin dal suo client) l'attaccante può semplicemente rubare il tuo codice ed eseguire gli stessi parametri per creare il proprio hash.

Se il server serve le pagine precedenti da cui è richiesto, puoi aggiungere un token / nonce una tantum (un po 'come un Token CSRF ) all'API. Ciò renderebbe praticamente impossibile la successiva richiesta di replica senza richiedere prima la pagina precedente e ottenere il proprio token.

Ma anche con questa strategia, un raschietto può sempre tornare a una pagina / URL del punto di ingresso e riprodurre la sequenza di richieste come se fossero un utente normale. È probabile che questo sia un attacco valido, indipendentemente dall'offuscamento che usi poiché sarà indistinguibile da un utente valido.

    
risposta data 10.10.2017 - 04:56
fonte

Leggi altre domande sui tag