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发送密码的最佳实践?
在未加密的情况下发送密码是不好的做法
是的,非常糟糕.
是否有从JS(Ajax)向PHP发送密码的最佳实践?
请求是通过标准页面加载还是通过Ajax请求进行的,这无关紧要.请求是针对PHP还是其他系统是无关紧要的.无论您使用GET还是POST都无关紧要.如果您要发送密码,请始终使用HTTPS.如果SSL证书的成本阻止了您,您可以在letsencrypt.org获得免费证书