Protezione della chiamata di servizio REST interna tramite JavaScript

2

Ho una singola pagina pubblica (SPA) che chiama il mio servizio REST back-end tramite JavaScript. Come posso proteggere il servizio REST in modo che accetti solo le chiamate dalla mia SPA e da nessun altro cliente o utente? Fondamentalmente, la mia SPA dovrebbe essere l'unico utente autorizzato del servizio.

Ogni modo in cui posso pensare di renderlo sicuro implicherebbe la memorizzazione di qualche tipo di segreto, tuttavia poiché la SPA è scritta completamente in JavaScript, chiunque può visualizzare la fonte.

    
posta kimsagro 22.03.2014 - 07:37
fonte

3 risposte

4

Non puoi, davvero. Qualsiasi cosa inviata tramite javascript può essere manomessa. Per questo motivo la tua SPA sarà vulnerabile agli attacchi XSS e MITM. Un'opzione consisterebbe nell'utilizzare i token di sessione e l'offuscamento che è una soluzione così grottesca. Inoltre, questa sarà un'apertura per gli attacchi CSRF: CSRF . Altrimenti, ti consiglio di far accedere i tuoi utenti in modo che ci sia una qualche forma di autenticazione.

    
risposta data 25.03.2014 - 18:05
fonte
0

Suppongo che non sia possibile al 100%. Per quanto ne so, ciò che puoi provare è l'uso del nonce crittografico. Ulteriori informazioni su nonce all'indirizzo - link

Il modo semplice in cui proverei a raggiungere questo obiettivo. 1. Genera un nonce iniziale. 2. Usa questo nonce nella prossima comunicazione con il server. 3. Sul server, verificare che il nonce sia generato solo dalla mia applicazione 4. Crea un nuovo nonce e piggyback insieme alla risposta. 5. Vai al passaggio 2 e utilizza il nuovo nonce.

    
risposta data 27.03.2014 - 11:33
fonte
0

È possibile configurare CORS (Cross Source Resource Sharing) per rispondere alle richieste provenienti da un particolare dominio. Nel nodo JS c'è un pacchetto per farlo.

var express = require('express')
var cors = require('cors')
var app = express()

var corsOptions = {
  origin: 'http://linktoyourSPA.com',
}

app.use(cors(corsOption));

Ciò consentirebbe le richieste solo da quel particolare dominio.

Se non stai usando nodeJs. Puoi impostare manualmente l'intestazione di risposta Access-Control-Allow-Origin . Per ulteriori informazioni leggi questo link

    
risposta data 06.07.2018 - 15:45
fonte

Leggi altre domande sui tag