如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1750字,纯文字阅读大概需要3分钟。
内容图文
![如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?](/upload/InfoBanner/zyjiaocheng/898/a422e19c81ac49dd961bda0837d4785e.jpg)
有没有办法通过自己的散列方法插入mysql数据库的php验证密码?
例如,如果我手动在表中插入用户数据,请假设用户表,如下所示:
INSERT INTO users (email, pswd) VALUES ('demo@example.com', SHA1('pass123'));
让我们假设mysql数据库中的哈希密码是:
+------------------------------------------+
| pswd |
+------------------------------------------+
| AAFDC23870ECBCD3D557B6423A8982134E17927E |
+------------------------------------------+
现在,我想使用php创建一个登录表单,当用户插入凭据时,他们应该能够登录.我的意思是,用户不会有任何php注册表单;密码将手动提供.但是如何验证用户在php中提供的数据与存储在mysql数据库中的密码?
据我所知,php中的password_verify()只有在使用自己的password_hash()函数对密码进行哈希处理时才有效.
我找到了另一个解决方案,就是再次使用sql查询,就像这样 –
SELECT pswd FROM users WHERE email='$_POST["email"]' AND pswd = md5($_POST["password"]);
然后通过计算执行该mysql查询的任何行返回的结果集,从而验证.但是,这对我来说似乎是一个非常糟糕的方法.我不知道是否还有其他办法.必须有一些好方法来解决这个问题.或者,可能是我必须使用另一个PHP表单将数据插入数据库.
您的建议非常感谢.谢谢.
解决方法:
我建议你使用password_hash()并将结果哈希存储在数据库中.
INSERT INTO users SET email=?, pswd=?
如果需要手动插入密码,可以使用快速命令行PHP脚本将其转换为哈希.例如:
<?php echo password_hash($ARGV[1], PASSWORD_DEFAULT)."\n"; ?>
使用phpmyadmin或mysql客户端手动将密码插入数据库时??,请使用此字符串.
避免将密码放入SQL查询中的文字字符串中是个好主意,即使您使用SQL函数对其进行散列也是如此.请记住,查询日志和二进制日志中记录了整个SQL字符串 – 未散列.
稍后,在验证登录时,获取密码哈希,如下所示:
SELECT pswd FROM users WHERE email=?
然后你的PHP代码有哈希.您可以使用password_verify().
P.S.:请学习使用参数化查询,不要在SQL查询中使用$_POST变量.这是一个SQL注入漏洞.
内容总结
以上是互联网集市为您收集整理的如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?全部内容,希望文章能够帮你解决如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。