È possibile proteggere un'API REST e convalidare l'integrità di ogni richiesta?

0

Sto provando a progettare un sito Web pubblico e vorrei sperimentare un backend WebAPI e uno dei popolari framework javascript front-end. Ora, questa applicazione non richiederà agli utenti di accedere in modo che non siano coinvolti processi di autenticazione.

Per essere onesti, la maggior parte delle altre applicazioni che ho sviluppato sono state applicazioni intranet, quindi non ho dovuto preoccuparmi di rottamare i dati con altri. In passato ho utilizzato principalmente framework lato server come ASP.NET/PHP per siti Web / applicazioni pubbliche, che renderebbero l'output html piuttosto che un documento JSON.

Il mio concetto attuale prevede un javascript, in esecuzione nel browser che richiede il mio endpoint WebAPI per la restituzione di un documento JSON. Potenzialmente in futuro ci sarebbe anche un'applicazione mobile come client che consuma questo endpoint.

Ovviamente non posso fornire un segreto condiviso da memorizzare sul lato client per generare un token di autenticazione.
Potrei pensare di applicare le intestazioni CORS sui server per consentire solo le richieste provenienti dal mio dominio, ma poi di nuovo nulla impedisce alle persone di visualizzare l'attività di rete di questo sito Web e di acquisire l'endpoint e eseguire il ping dell'endpoint direttamente dal proprio cliente.
Potrei usare un token di accesso di breve durata che il mio server avrebbe consegnato solo a una richiesta valida dal mio frontend del sito Web.
Ma poi di nuovo niente impedisce alle persone di prendere questo token semplicemente aggiornando il mio sito web e trasmettendo questo token al loro cliente.
Anche pensare come intestazioni host, user-agent, ecc. possono essere facilmente falsificati.

Potrei potenzialmente inviare un cookie HTTP al mio dominio e ogni volta convalidare le richieste http contro questo cookie. Ma visto che farò anche chiamate ai jax ai server, le mie richieste non potrebbero essere onorate perché anche i miei script non possono accedere ai soli cookie HTTP ?.

La cosa migliore che potrei fare è limitare l'impostazione di accesso autorizzato CORS al mio nome di dominio, ma capire che prevenire la demolizione è un compito molto scoraggiante, ma la mia vista è la demolizione di un'API che restituisce i dati JSON sarebbe un compito molto più semplice di quello di dire rottamazione di un HTML uscita dal server.

Raccomanderesti il modello SPA con un backend di API REST per lo sviluppo di applicazioni pubbliche che non richiedono l'autenticazione?

    
posta Vignesh.N 07.05.2017 - 13:08
fonte

1 risposta

2

La tua domanda si riduce fondamentalmente a:

"posso impedire la visualizzazione anonima del mio sito web e consentire comunque la visualizzazione anonima del mio sito web"

Bene, una capatcha può essere usata per prevenire i bot se hai richieste poco frequenti.

Ma in realtà devi aggiungere un accesso se vuoi limitare l'accesso.

    
risposta data 07.05.2017 - 14:23
fonte

Leggi altre domande sui tag