作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这确实是理所当然的事情,但我觉得我从未听过对此的“官方”裁决,也许是因为这并不重要,或者也许是因为它太明显了,而我只是错过了。
所以我认为有三个选择:
检查 MySQL 查询中的用户/密码(假设所有内容都已清理和/或准备好,并且密码已加盐和散列存储):
SELECT COUNT(username) FROM users WHERE user = '$user' && pass = '$pass';
查询用户/密码并 checkin 代码:
SELECT user, pass FROM users WHERE user = '$user';
还有一些我完全不知道但应该做的事情。
是否有明确的理由选择 1 或 2,如果有 3,我洗耳恭听。
最佳答案
我认为 #2 的版本是最好的 - 大多数情况下,您会想了解有关用户的其他信息(例如唯一的 ID,或他们的全名,或与您的应用程序相关的任何信息) )因此,一旦身份验证成功,您就必须执行另一个查询。
我不知道您是否在 MySQL 或应用程序代码中检查身份验证 - 这取决于您在何处进行散列/解密/其他操作,并且只需要安全且工作即可。
如果您在查询中的身份验证步骤中读入信息,那么您就已经获得了稍后所需的所有信息。如果查询失败或没有提供您期望的密码哈希值,您可以处理它并且不会造成任何损害。
关于php - MySQL 和用户身份验证 - 内部查询与查询后的有力证据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966624/
我是一名优秀的程序员,十分优秀!