我正在尝试使用SHA2加密“密码”列。问题在于,通过$ _POST变量向MYSQL进行注入,因此我不知道应将SHA2()放在哪里。
这是我的“插入”页面(inscreate.php):
<?php
include 'header.php';
$ins="INSERT INTO users (uname, pwrd, bdate, mail)
VALUES ('$_POST[uname]','$_POST[pwrd]','$_POST[bdate]','$_POST[mail]')";
if (!mysqli_query($con,$ins))
{
die('Error: ' . mysqli_error($con));
}
echo "User added! You will be returned to the index page!";
mysqli_close($con);
?>
从我已阅读的内容中,我必须将其放在插入查询的“值”部分:http://coderlearner.com/MySQL_Encryption-Decryption_Example_SHA2
所以我尝试了这些组合:
$ins="INSERT INTO users (uname, pwrd, bdate, mail)
VALUES ('$_POST[uname]','SHA2($_POST[pwrd])','$_POST[bdate]','$_POST[mail]')";
但是如果密码例如:mypass,则数据库中的输出为:SHA2(mypass)
我尝试了这个:
$ins="INSERT INTO users (uname, pwrd, bdate, mail)
VALUES ('$_POST[uname]',$_POST[SHA2(pwrd)]','$_POST[bdate]','$_POST[mail]')";
但是然后我得到一个解析错误(我理解为什么,但是我仍然在尝试)
所以我的问题是:有人知道我如何加密$ _POST吗?
最佳答案
再次查看示例。
mysql> INSERT INTO userpassword(id, username,password)
-> VALUES(null,'Lili',SHA2('mypassword1',256));
引号引起来。
SHA2()
函数调用用引号引起来。同样,
SHA2()
接受两个参数。'SHA2($_POST[pwrd])'
应该:
SHA2('$_POST[pwrd]', 256)
…但是不要将POST数据直接粘贴到SQL中。这使您很容易受到SQL injection attacks的攻击而需要自己defend。