Django, ajax e HttpOnly cookie

1

Durante la lettura di "Web aggrovigliato" mi sono imbattuto nella descrizione dei cookie solo http e volevo provarlo nel mio progetto, quindi ho aggiunto queste impostazioni in base a docs :

CSRF_COOKIE_HTTPONLY = True
SESSION_COOKIE_HTTPONLY = True

E andò a console per immergersi in esso. Come previsto, nessun token csrf o cookie di sessione si sono presentati quando ho eseguito alcuni JS:

> document.cookie
"djdt=hide"

Tuttavia, ho AJAX in esecuzione in background che esegue il polling di alcuni dati dal server che iniziano con:

function doPoll() {
    $.get(predefinedUrl){
        (...)

E sembra che in qualche modo abbia accesso a questi dati: .

Lemiedomandesono:comesonoaccessibiliquestidati?Èsufficientechequestoscriptfacciarichiestaalmiositoeilbrowsergestiscailresto(comesuccedeneicasi"regolari")? Significa che dovrei essere in grado di attivare in modo sicuro questo flag http solo per impostazione predefinita e non preoccuparti che gli script di frontend non saranno in grado di effettuare richieste? C'è qualcosa per cui dovrei prestare attenzione?

    
posta gonczor 20.02.2018 - 00:06
fonte

1 risposta

1

how is this data accessible?

Non lo è. Se il tuo browser invia una richiesta, incluse le richieste AJAX, includerà tutti i cookie per il dominio di destinazione nell'intestazione Cookie , anche httpOnly cookie. 1 Tuttavia, lo script non può accedervi poiché le intestazioni Set-Cookie e Cookie sono intestazioni vietate per specifica e non puoi estrarre con, diciamo, XMLHttpRequest.getResponseHeader('Set-Cookie') .

Does it mean I should be able to securely switch on this http only flag by default and not worry that frontend scripts will not be able to make requests?

Con i cookie di httpOnly il tuo script può ancora effettuare richieste autenticate, semplicemente non può leggere i valori dei cookie httpOnly che vengono inviati insieme. L'attivazione di httpOnly interrompe la funzionalità solo se gestisci esplicitamente i cookie sul lato client.

1 sameSite i cookie possono costituire un'eccezione.

    
risposta data 20.02.2018 - 00:53
fonte

Leggi altre domande sui tag