REST backend limitato l'accesso solo per gli esseri umani

0

Progetterò un backend REST che funzionerà con il mio database. Voglio che gli utenti accedano a questi dati visualizzando la mia pagina web (lavorerò con un framework MVC JS) senza effettuare il login.

Allo stesso tempo, voglio impedire agli utenti di effettuare chiamate API dirette al mio back-end in modo che non possano trarre vantaggio dai miei dati. (Sto raccogliendo una sorta di statistica aggregante da molti siti).

È in qualche modo possibile? Stavo pensando di generare una sessione basata su un captcha ma forse c'è una soluzione migliore a cui non ho pensato.

tldr: voglio solo il mio codice in esecuzione nel browser per accedere al mio back-end.

P.S So che le persone possono usare il selenio per demolire il mio sito, voglio renderlo difficile / non una buona soluzione per loro.

    
posta arisalexis 08.12.2014 - 01:57
fonte

2 risposte

2

Quindi non creare un'API pubblica. Fai in modo che il tuo server web costruisca l'HTML nel back-end e lo restituisca nel suo complesso. BACIO .

Se vuoi creare un front-end HTML / JS che chiami JSON pubblico / qualunque sia il servizio REST, ci saranno centinaia di modi per chiamare direttamente i servizi¹, anche se significa simulare un browser (che in realtà non è così difficile come sembra). La sessione basata su Captcha sembra l'unica scelta sicura, ma allora perché spingersi fino a costringere l'utente a fare qualcosa di così fastidioso, come riempire un Captcha con ogni richiesta², se si può semplicemente usare i costruttori HTML sul lato server e sbarazzarsi dell'API pubblica?

¹: Non riesco a pensare a nessun motivo per aver paura di questo, ma sto divagando.

²: se non è con ogni richiesta, deve essere una sessione con una data di scadenza. Fino a quella data, un utente può riempire il Captcha, ottenere l'ID di sessione e semplicemente lanciarlo in un programma che chiama le tue API pubbliche.

    
risposta data 08.12.2014 - 03:03
fonte
0

Se non si desidera che gli utenti visualizzino i dati nel formato restituito dall'API al lato client JS, è possibile eseguire l'elaborazione / aggregazione lato client sul server stesso e restituire i dati aggregati tramite la tua API. In questo modo l'API restituirà solo i dati che gli utenti sono autorizzati a vedere e il tuo framework JS funziona come un livello di presentazione (potresti eliminare MVC sul lato client).

Non esiste un modo completo per impedire agli utenti di accedere ai dati a cui accede il codice JS del client. Se fosse un'app compilata (applet java, ecc.) Potresti rendere più difficile all'utente visualizzare i dati dall'API, ma anche in questo caso i dati possono ancora essere recuperati.

    
risposta data 08.12.2014 - 11:21
fonte

Leggi altre domande sui tag