¿Es una llamada AJAX menos segura que el método POST normal?

5

Actualmente tengo un formulario de inicio de sesión estándar como este:

<?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>

Quiero moverme a AJAX, para que la nueva página no se actualice. Este es mi nuevo método:

<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>

Y mi login_validation.php se ve así:

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

}

¿Es el segundo método menos seguro que el primero?

    
pregunta Tim von Känel 17.04.2018 - 13:25
fuente

2 respuestas

7

Ambos son igualmente seguros. Hay errores que podrías cometer en cualquier versión, pero ninguno es mejor que el otro.

Lo que es relevante para la seguridad de su inicio de sesión es el lado del servidor. No puede poner restricciones de seguridad en el cliente, ya que tales restricciones podrían ser anuladas de manera trivial. Entonces, lo importante aquí es el código en el lado del servidor que realiza la validación. Y es lo mismo para ambas opciones aquí: comprueba que se trata de una solicitud POST y comprueba si el nombre de usuario y la contraseña son correctos.

    
respondido por el Anders 17.04.2018 - 13:55
fuente
3

Como dijo Anders, en realidad no importa, ya sea AJAX o no AJAX. Los principios de seguridad principales se basan en cómo proteger los códigos. La Guía de pruebas de OWASP es un buen comienzo para que lo eches un vistazo.

Encuentre dos secciones relacionadas con la funcionalidad de inicio de sesión:

enlace

enlace

    
respondido por el yehg.net 17.04.2018 - 16:27
fuente

Lea otras preguntas en las etiquetas