Come memorizzare un token di accesso utente su un sito di terze parti nel front-end

1

Sto lavorando su un plugin per wordpress che fornisce un sistema di thread di commento simile a disqus (ma diverso).

Per accedere (per inviare commenti) il flusso di lavoro è simile a questo:

  • L'utente fa clic sul log-in sul blog wordpress
  • Si apre una finestra popup con il modulo di login sul backend api per il mio plug-in (un altro sito)
  • L'utente accede e utilizza PostMessage. Ricevo un token di accesso.

Ora con quel token di accesso quando esegue un'azione come upvoting o postare un commento invierò una richiesta di post al mio backend API insieme al token e se il token è valido aggiungo il commento / upvote al database.

Ma non sono sicuro di come gestire in modo sicuro il token utente: il mio primo pensiero è stato inserirlo in un cookie, ma qualsiasi blog maligno di wordpress può eseguire alcuni js per rubare automaticamente tutti i token dagli utenti che accedono ai loro siti web.

E dal momento che tutto il logging sta accadendo nella parte frontale del blog wordpress, non vedo come posso memorizzare i dati in modo che l'API backend possa accedervi quando l'utente fa un'azione ma non un blog malevolo .

Come posso archiviare in modo sicuro quel token? Ho pensato di incorporare il sito web in un iframe per fare affidamento sulle variabili di sessione, ma non sono sicuro di quanto sia sicuro.

    
posta drovfr 03.09.2018 - 13:28
fonte

1 risposta

1

Quel token dovrebbe essere impostato dal tuo server back-end, non dal sito wordpress che sta usando il tuo plugin.

Se il tuo server imposta httpOnly durante l'emissione del cookie, le richieste (ad esempio tramite JavaScript dal sito wordpress che utilizza il plug-in) al tuo back-end avranno quel cookie incluso nella richiesta dal browser mentre lo stesso javascript ( dalla pagina wordpress) non avrà accesso ad esso.

Da OWASP :

If the HttpOnly flag (optional) is included in the HTTP response header, the cookie cannot be accessed through client side script (again if the browser supports this flag). As a result, even if a cross-site scripting (XSS) flaw exists, and a user accidentally accesses a link that exploits this flaw, the browser (primarily Internet Explorer) will not reveal the cookie to a third party.

Dopo tutto, la tua domanda implica che non hai pensato al tuo modello di comunicazione fino in fondo; questa informazione non ha mai bisogno di essere accessibile dallo scopo del blog wordpress.

    
risposta data 03.09.2018 - 14:38
fonte

Leggi altre domande sui tag