我想进行密码检查,其中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语句并且是安全的。安全性要求您不存储密码。
为了安全,您必须:
- 仅以带salt的哈希形式存储密码
- 通过SSL将提交的密码发送到服务器
- (在服务器上)用相同的salt对提交的密码进行散列,并将其与存储的散列密码进行比较
即使不是这样,要求浏览器(由用户控制)检查密码是否正确也是不安全的,因为用户可以查看JavaScript并直接在else
语句中发出HTTP请求。
你需要做一些类似的事情:
$.ajax({
type: "POST",
url: "modify_profile.php",
data: {"firstname":firstname,"lastname":lastname, password: password},
success: function( data){ }
})