密码哈希

时间:2016-05-06 07:14:50

标签: php phpmyadmin

我有一个注册表单,其中输入数据被写入数据库。密码' pw'将使用BCRYPT进行哈希处理,这可以正常使用此代码:

$ pwHash = pw_hash($ pw,PASSWORD_BCRYPT,数组('费用' => 10));

问题:

当我想更新数据时,它将无法正常工作。 下面的代码将没有加密的数据写入数据库。

如何加密密码?

有人可以帮助我吗?



procedure TForm1.SelectChildren(ANode: TTreeNode);
begin
  ANode := ANode.GetFirstChild;
  if ANode = nil then Exit;
  repeat
    TreeView1.Select(ANode, [ssCtrl]);
    SelectChildren(ANode);
    ANode := ANode.getNextSibling;
  until ANode = nil;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  Node: TTreeNode;
begin
  if (TreeView1.Selected <> nil) and
     (TreeView1.Selected.Level <> 0) then Exit;
  Node := TreeView1.Selected;
  SelectChildren(Node);
end;
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

我想修复应该是以下

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

更改

  1. 在同一循环中创建pwHash变量并更新表。
  2. 访问$pw[$i]作为其他变量,例如$id$fn - 它们似乎都是数组。
  3. $pwHash不是数组,可以像标量变量一样访问它。
  4. 使用password_hash功能 - 根据Paul Crovella
  5. 的评论进行更新

    有几个与代码相关的问题。我认为主要的是代码打开SQL injection attack