php - 将泄露密码的解决方案转变为安全的解决方案

标签 php javascript ajax

我想进行密码检查,其中 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='test@gmail.com';

    $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")
?>

最佳答案

您不可能拥有这种风格的 if 语句并且是安全的。安全性要求您不要存储密码。

为了安全,您必须:

  1. 仅将密码存储在 hashed form 中加盐
  2. 通过 SSL 将提交的密码发送到您的服务器
  3. (在服务器上)使用相同的盐对提交的密码进行哈希处理,并将其与存储的哈希密码进行比较

即使情况并非如此,要求浏览器(在用户的控制下)检查密码是否正确也是不安全的,因为用户可以查看 JavaScript 并在直接else语句。

您需要执行以下操作:

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

关于php - 将泄露密码的解决方案转变为安全的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18548499/

相关文章:

javascript - 陷入 onsubmit 的困境

php - 读取标题后中止上传大文件

javascript - 如何在字符串中输入撇号 ( ' ) 符号?

javascript - DataTables Ajax 错误 - 无效的 JSON 响应

javascript - 通过ajax加载图像时出现无限循环

php - 基于字符集的固定长度的所有字符串组合

如果 Div 不可见,用于更新数据库的 PHP/JQuery/AJAX

javascript - 遍历具有相同类的动态生成的 HTML 元素,并使用它们的数据构建对象

javascript - laravel pdf文件从ajax请求下载(laravel 5)

php - 如何用php和mysql计算剩余时间?