Confronto tra il modulo HTML standard POST per l'autenticazione utente vs Javascript / AJAX

5

Ci sono implicazioni sulla sicurezza con il POST di una richiesta di autenticazione con l'uso di javascript / ajax, al contrario di POST di un elemento HTML premendo il pulsante di invio?

così

<form method="POST" action="/login/">
  <input type="hidden" name="csrfToken" value="(...)"/>
  <input type="text" name="username" value="" maxlength="64" autocomplete="off"/>
  <input type="password" name="password" value="" maxlength="1024"/>
  <input type="submit" value="login"/>
</form>

esempio 1: login con modulo HTML in pseudo-codice

vs

<form method="POST" action="/login/">
    (... same as above ...)
    <input type="button"/> <!-- will trigger javascript method below -->
</form>

<script type="text/javascript"/>
$.ajax({
    type: "POST",
    url: "/login/",
    data: "(...)", // All form fields
    dataType: "json",
    success: function(data) {
        (...)
    }
});
</script/>

esempio 2: login con ajax in pseudo-codice

Questa domanda riguarda solo javascript / ajax rispetto a modulo html post , tutte le altre cose come TLS, password, ecc. non sono la mia area di interesse per questa domanda .

Domanda aggiornata Aggiunto il campo per perché ho introdotto qualche confusione citando il csrfToken.

    
posta Jacco 10.07.2012 - 12:38
fonte

1 risposta

7

Non ci dovrebbero essere differenze in termini di sicurezza, dal momento che il POST viene gestito dal browser allo stesso modo di un modulo. Se esegui HTTPS, andrà anche su HTTPS.

Tuttavia, tieni presente che le app complesse basate su ajax sono statisticamente più suscettibili di essere vulnerabili agli XSS rispetto alle pagine HTML piatte. Questo non significa che tu sia definitivamente, è solo qualcosa a cui prestare attenzione.

Cose da considerare:

  • Assicurati che lo script sia pubblicato tramite HTTPS. Sareste sorpresi di quante persone servano i loro script da un CDN su HTTP non crittografato.
  • I criteri relativi ai domini appropriati devono essere specificati in crossdomain.xml
  • Considera l'applicazione della sicurezza di trasporto rigorosa .
  • Configura correttamente la norma sulla sicurezza dei contenuti .
  • Evita eval , esci l'output utilizzando l'escaping contestuale, ecc.
risposta data 10.07.2012 - 13:03
fonte

Leggi altre domande sui tag