php
  • javascript
  • ajax
  • 2013-08-31 34 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

    相关问题