Una chiamata AJAX è meno sicura del normale metodo POST?

5

Al momento ho un modulo di accesso standard come questo:

<?php
if( isset( $_POST['username], $_POST['password'] ) ) {
    // escape both strings and compare them to database
}

?>
<form action="" method="post">
    <input type='text' value='username' name='username'></input>
    <input type='password' value='password' name='password'></input>
    <input type='submit' value='submit'></input>
</form>

Voglio passare ad AJAX, quindi la nuova pagina non si aggiorna. Questo è il mio nuovo metodo:

<script>
function login_ajax() {
     var formdata = new FormData();
     var ajax = new XMLHttpRequest();
     formdata.append('username', document.getElementById('username').value;
     formdata.append('password', document.getElementById('password').value;
     ajax.open( "POST", "https://my-website.com/login_validation.php" );
     ajax.onreadystatechange = function() {
         if(ajax.readyState == 4 && ajax.status == 200) {
             // do something
         }
    }
    ajax.send( formdata );
}

</script>
?>
<form action="" method="post" onsubmit='login_ajax(); return false;'>
    <input type='text' value='username' id='username'></input>
    <input type='password' value='password' id='password'></input>
    <input type='submit' value='submit'></input>
</form>

E il mio login_validation.php assomiglia a questo:

<?php
if( isset ( $_POST['username'], $_POST['password'] ) ) {
    // escape strings compare to database and sign on

}

Il secondo metodo è meno sicuro del primo?

    
posta Tim von Känel 17.04.2018 - 13:25
fonte

2 risposte

7

Sono entrambi ugualmente sicuri. Ci sono errori che potresti fare in qualsiasi versione, ma nessuno è intrinsecamente migliore dell'altro.

Ciò che è rilevante per la sicurezza del tuo login è il lato server. Non è possibile applicare restrizioni di sicurezza al client, poiché tali restrizioni potrebbero essere aggirate banalmente. Quindi la cosa importante qui è il codice sul lato server che esegue la convalida. E questo è lo stesso per entrambe le opzioni qui - controlla che sia una richiesta POST, e controlla se il nome utente e la password sono corretti.

    
risposta data 17.04.2018 - 13:55
fonte
3

Come ha detto Anders, non importa - Sia AJAX o non-AJAX. I principali principi di sicurezza si basano su come si proteggono i codici. OWASP Testing Guide è un buon inizio per dare un'occhiata.

Trovate due sezioni relative alla funzionalità di accesso:

link

link

    
risposta data 17.04.2018 - 16:27
fonte

Leggi altre domande sui tag