使用Ajax将密码发送到PHP

use*_*330 1 javascript php authentication ajax jquery

我正在尝试实现身份验证.
我当前的版本有效.但是,虽然我正在使用POST,但是发送未加密的密码是不是一种错误的做法?

JavaScript的:

$.ajax({
    type : "POST",
    url : "script.php",
    data : {
        q : "login",
        user: $("#user").val(),
        pass: $("#pass").val()
    },
    success : function(data) {
        if(data){
            alert("VALID")
        }else{
            alert("INVALID")
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

PHP:

if ($_POST ["q"] == "login") {
    $user = $_POST ["user"];
    $pass = $_POST ["pass"];

    $sql = "SELECT user, pass FROM users WHERE user='" . $user . "'";

    $stmt = sqlsrv_query ( $conn, $sql );
    if ($stmt === false) {
        die ( print_r ( sqlsrv_errors (), true ) );
    }

    $arr = array ();
    $row = sqlsrv_fetch_array ( $stmt );
    $hash = $row ["pass"];

    if (password_verify ( $pass, $hash )) {
        die ( true );
        exit ();
    } else {
        die ( false );
        exit ();
    }

    sqlsrv_free_stmt ( $stmt );
    sqlsrv_close ( $conn );

    exit ();
}
Run Code Online (Sandbox Code Playgroud)

是否有从JS(Ajax)向PHP发送密码的最佳实践?

Ale*_*sky 6

在未加密的情况下发送密码是不好的做法

是的,非常糟糕.

是否有从JS(Ajax)向PHP发送密码的最佳实践?

请求是通过标准页面加载还是通过Ajax请求进行的,这无关紧要.请求是针对PHP还是其他系统是无关紧要的.无论您使用GET还是POST都无关紧要.如果您要发送密码,请始终使用HTTPS.如果SSL证书的成本阻止了您,您可以在letsencrypt.org获得免费证书