2016-07-21 51 views
1

我正在嘗試實現身份驗證。
我目前的版本有效。但是,儘管我正在使用POST,但是發送未加密密碼是一種不好的做法嗎?發送帶有Ajax的密碼到PHP

的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") 
     } 
    } 
}); 

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(); 
} 

是否有從JS(阿賈克斯)發送密碼PHP的最佳做法?

+4

請注意,您不受SQL注入的保護。 – AntoineB

+2

使用https而不是http,然後它會被加密 –

回答

6

是考慮一個不好的做法,發送未加密的密碼

是的,非常糟糕。

是否有從JS(Ajax)發送密碼到PHP的最佳做法?

請求是通過標準頁面加載還是Ajax請求進行是無關緊要的。請求是否發佈到PHP或其他系統是無關緊要的。無論您使用GET還是POST都無關緊要。如果您要發送密碼,請始終使用HTTPS。如果SSL證書的費用正在停止,您可以免費獲得letsencrypt.org