php
  • javascript
  • ajax
  • 2013-08-31 41 views 0 likes 
    0

    我想做一個密碼檢查,其中的javascript變量是用戶編寫的密碼。我想檢查它是否正確,並通過比較用戶寫到我的php變量中來存儲實際值來做到這一點。將一個揭示密碼的解決方案轉變爲一個安全的解決方案

    這不是一個安全的解決方案。我該如何改變它。我想要if語句和以前一樣嗎?

    她是我的代碼:

      var password=$("#password").val(); 
    
          if(password!='<?php echo "$password"; ?>'){ 
          alert("No changes has been made due to wrong password."); 
          } 
          else{ 
           $.ajax({ 
            type: "POST", 
            url: "modify_profile.php", 
            data: {"firstname":firstname,"lastname":lastname}, 
            success: function(data){  
            } 
           }); 
          } 
          }); 
    

    這裏是modify_profile.php。

    <?php 
        require("../db/connect.php"); 
        $email='[email protected]'; 
    
        $written_password=($_POST['firstname']); 
    
    
    
    
        if(isset($_POST['firstname'])) 
    { 
    
        $firstname=($_POST['firstname']); 
        $query=mysqli_query($dbcon, "UPDATE user SET first_name='$firstname' WHERE email='$email'"); 
        $result = mysqli_query($dbcon,$query); 
    
    } 
    
        if(isset($_POST['lastname'])) { 
        $lastname=($_POST['lastname']); 
        $query=mysqli_query($dbcon, "UPDATE user SET last_name='$lastname' WHERE email='$email'"); 
        $result = mysqli_query($dbcon,$query); 
    
    
    } 
    
    
    require("../db/close.php") 
    ?> 
    
    +1

    你將不得不將密碼發送到另一個文件,並在服務器上進行比較,這會阻止真正的密碼被人看到在源。如果這就是你不安全的意思? – Dale

    +0

    在Stackoverflow上的PHP exmaple代碼,請不要使用short-open標籤,請參閱[是否可以使用PHP短標籤?](http://stackoverflow.com/q/200640/367456) – hakre

    +0

    右鍵單擊+ inspect元素=啊,所以這是密碼! –

    回答

    4

    您不能擁有該風格的if語句並且安全。安全性要求您不要存儲密碼。

    爲了安全起見,你必須:

    1. 只有hashed form存儲密碼與鹽
    2. 通過SSL發送提交的密碼到您的服務器
    3. (在服務器上)哈希與所提交的密碼相同的鹽,並將其與存儲的散列密碼進行比較

    即使情況並非如此,要求瀏覽器(在用戶的控制下)檢查密碼是正確的將是不安全的,因爲用戶可以查看JavaScript並直接在else聲明中發出HTTP請求。

    你需要做的是這樣的:

    $.ajax({ 
        type: "POST", 
        url: "modify_profile.php", 
        data: {"firstname":firstname,"lastname":lastname, password: password}, 
        success: function(data){ } 
    }) 
    
    +0

    嗯,事情是我想在進入modify_profile.php之前檢查它,因爲我想在密碼錯誤的情況下執行一些操作。也許我不想要特定的警報消息,但我希望能夠將文本更改爲紅色。上面的答案是 –

    +0

    是正確的,你可以隨時做一些事情。 – kangoroo

    +0

    然後你需要'modify_profile.php'來返回一個表明密碼錯誤的響應,然後你的錯誤處理程序可以改變文本顏色(希望其他的東西更加明顯)。 – Quentin

    相關問題