php泄露数据库密码,关于php:加密SQL数据库中的密码列

我的数据库名密码中有一列,我只想在发布到数据库之前散列或加密密码。我在php提交文件中有这样的代码。

session_start();

include('config.php');

$ID=$_POST['ID'];

$name=$_POST['name'];

$password=$_POST['password'];

$department=$_POST['department'];

$email=$_POST['email'];

$ID_arr=array();

$name_arr=array();

$password_arr=array();

$dept_arr=array();

$email_arr=array();

$i = -1;

++$i;

$ID_arr[$i]= $_POST['ID'];

$name_arr[$i]= $_POST['name'];

$password_arr[$i]= $_POST['password'];

$dept_arr[$i]= $_POST['department'];

$email_arr[$i]= $_POST['email'];

$j=0;

while ( $j <= $i)

{

$ID = $ID_arr[$i];

$name = $name_arr[$i];

$password = $password_arr[$i];

$department = $dept_arr[$i];

$email = $email_arr[$i];

$sql ="INSERT INTO `employee`. `admin` (ID ,name ,password ,department

,email)         VALUES     (

'$ID' ,'$name' ,'$password' ,'$department' ,'$email'

)";

$result = mysql_query($sql);

if(!$result){

die('invalid query:'.mysql_error());

}

else

echo ("

" ."You have been succesfully registered..." ."");

header('Refresh:5; url=adminlogin.php');

die;

}

?>

我可以知道加密函数应该放在哪里吗?或者用什么方法加密密码?

可能是像这样的东西。

更好的是,请参阅这个(接受的)答案stackoverflow.com/a/6782189/1415724

这是另一篇很好的文章,相当大,但值得一读openwall.com/article s/php-users-passwords

最后一个larryullman.com/forums/index.php?/主题/&hellip;

stackoverflow.com/questions/3981638/&hellip;

您可以使用mysql PASSWORD函数和php crypt函数。

mysql函数示例:

INSERT INTO table VALUES (PASSWORD('abcd'));

如果php大于等于5.5.0,则:

$password = password_hash('the password');

如果您有旧版本的PHP,那么使用兼容性库。包括lib/password.php文件,然后像往常一样使用文档。

首先,忘记MD5。如果使用php>=5.1.2,则可以使用hash()函数。

根据您所关注的代码:

...

$j=0;

while ( $j <= $i)

{

$ID = $ID_arr[$i];

$name = $name_arr[$i];

$password = $password_arr[$i];

$department = $dept_arr[$i];

$email = $email_arr[$i];

...

您只需对$password进行以下操作:

$password = hash('sha256', $password_arr[$i]);

但是,使用sha256,必须确保数据库表中的密码字段的长度为64或更大,即varchar(64)或char(64)。参考以下问题的答案:

使用sha256哈希时,哈希有多长?(例如,我的mysql varchar应该多长时间?)

另外,在config.php中,您可以定义一个slat,例如$salt,它是一个固定字符串,将添加到每个密码中:

//in your config.php

...

$salt='jhfdkjdhfTyhdh3365@jdh69kkshhQAAAiyeg'// some ungussed string

...

// in your hash code:

$password = hash('sha256', $salt.$password_arr[$i]);

谢谢你的回答,我总是能在这个网站上解决我的问题,以及你们所有人的友好性格,很高兴见到你:)

您好,由于输入的密码与数据库中的哈希密码不匹配,登录时间有问题,我可以重新刷新输入的密码,因为它已经是salt了

与在保存到数据库之前对其进行哈希处理相同。在数据库的选择查询中插入哈希值。

如果您的密码是一个变量,请尝试使用类似的方法

$input=mysqli_real_escape_string($con, $_POST['password']);

$password = md5($input);

让你的SQL

UPDATE table SET password='$password';

未测试的代码…

来自实际手册。

http://php.net/manual/en/function.md5.php

您不应该使用MD5算法来散列密码。多年来它一直不安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值