[英]Password Hashing
我有一个注册表格,其中输入数据被写入数据库。 密码“ pw”将使用BCRYPT进行散列,此代码可正确使用此代码:
$ pwHash = pw_hash($ pw,PASSWORD_BCRYPT,array('cost'=> 10));
问题:
当我要更新数据时,它将无法工作。 下面的代码将未经加密的数据写入数据库。
如何使密码加密?
有人可以帮我从这里出去吗?
<?php include_once 'dbcon.php'; $id = $_POST['id']; $fn = $_POST['fn']; $ln = $_POST['ln']; $em = $_POST['em']; $hid = $_POST['hid']; $tn = $_POST['tn']; $us = $_POST['us']; $pw = $_POST['pw']; $ul = $_POST['ul']; $chk = $_POST['chk']; $chkcount = count($id); for($i=0; $i<$chkcount; $i++) $pwHash = pw_hash($pw, PASSWORD_BCRYPT, array('cost' => 10)); { $MySQLiconn->query("UPDATE user SET FName='$fn[$i]', LName='$ln[$i]', Email='$em[$i]', HerbalifeID='$hid[$i]', TelNr='$tn[$i]', UplineS='$us[$i]', Password='$pwHash[$i]', UserLevel='$ul[$i]' WHERE UserID=".$id[$i]); } header("Location: indexAdmin.php"); ?>
我想解决方法如下
<?php
include_once 'dbcon.php';
$id = $_POST['id'];
$fn = $_POST['fn'];
$ln = $_POST['ln'];
$em = $_POST['em'];
$hid = $_POST['hid'];
$tn = $_POST['tn'];
$us = $_POST['us'];
$pw = $_POST['pw'];
$ul = $_POST['ul'];
$chk = $_POST['chk'];
$chkcount = count($id);
for ($i = 0; $i < $chkcount; $i++) {
$pwHash = password_hash($pw[$i], PASSWORD_BCRYPT, array('cost' => 10));
$MySQLiconn->query("UPDATE user SET FName='$fn[$i]', LName='$ln[$i]', Email='$em[$i]', HerbalifeID='$hid[$i]', TelNr='$tn[$i]', UplineS='$us[$i]', Password='$pwHash', UserLevel='$ul[$i]' WHERE UserID=".$id[$i]);
}
header("Location: indexAdmin.php");
的变化是
pwHash
变量并更新表。 $pw[$i]
作为$id
和$fn
等其他变量进行访问-它们似乎都是数组。 $pwHash
不是数组,像标量变量一样访问它。 password_hash
函数-根据Paul Crovella的评论进行更新 与代码有关的几个问题。 我认为,最主要的事实是该代码已对SQL注入攻击开放。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.