![]() |
1
16
将 被网络罪犯破解。 人们对糟糕的安全代码没有多少幽默感。你会对像你这样的代码产生强烈反应,因为Equifax、Ashley Madison和Adobe,以及所有其他被网络罪犯破解的地方。为什么我们跳到你身上?因为我们不喜欢网络罪犯,也不想让他们过得轻松。朋友不要让朋友做不好的密码安全。朋友不会向朋友显示非常不安全的密码验证代码。 你的代码怎么了?您将密码存储为纯文本,很容易受到SQL注入的攻击。我将讨论其中的第一个问题。 幸运的是,php拥有出色的业界领先的密码安全设施。请在此处阅读。 http://php.net/manual/en/faq.passwords.php 使用它们。你如何处理密码?
这个序列是经得起未来考验的,因为如果旧的哈希方法太容易被网络爬虫破解,它可以在以后重新刷新密码。许多用户帐户的生命周期远长于php等软件包版本。 要使密码等凭据保持机密,您需要 必须 使用https而不是http在浏览器和服务器之间进行连接。否则,网络罪犯可以拦截从用户到服务器的流量,并获取她的密码。装配一个支持https的服务器可能是一个棘手的问题,但这是部署web应用程序的关键部分。(像Heroku这样的服务可以让你轻松地用https测试你的应用。) |
![]() |
2
3
上面的评论提到了一些问题。 混合mysql_*与mysqli_*API
使用调用查询
使用条件查询 二者都 用户名和密码只需搜索用户名,然后获取密码。如果您搜索 ,则搜索将返回零行,除非使用了正确的密码。 你不会想要的。您希望避免将明文密码放入SQL查询中。只需搜索用户名,获取存储的密码,然后将获取的内容与用户输入的密码进行比较。
如果从查询中获取零行,则
无密码哈希您似乎在将用户输入(我假设是纯文本)直接与数据库中存储的内容进行比较。 You're Probably Storing Passwords Incorrectly. 相反,当您存储密码时,请使用 password_hash() 第一 没有查询参数我知道你说过你不在乎你的SQL注入漏洞,但这就像是一个电工说你不在乎你的配电盘塞满了油布。一定要在你的LinkedIn个人资料上贴出你对安全的漠视,这样雇主就知道该避开谁了。 建议的实施
|
![]() |
3
1
这里有几个问题,无论是在您的代码中还是在思考过程中。让我们继续往下走:
那个
不需要同时选择用户名和密码列。如果有一场比赛,他们将永远是一样的
请记住--假设查询成功执行--
该行需要删除。您已经执行了查询,并且
你
不能
因为你只关心是否有结果 完全 ,整个部分可以更改为:
这将带来其他问题,因为您无法使用
一旦你修复 全部的 在这些问题中,你还有一些想法要做。
这里的主要教训应该是:当你在开发时,它不起作用,总是检查错误日志,看看它是否包含任何提示,并打开PHP的错误报告功能,这样你就可以看到你在浏览器中做错了什么。 |
![]() |
jsc · Powershell创建密码过期报告 7 年前 |
![]() |
Emp1 · 密码-登录不工作Python 7 年前 |
|
Anmol Dua · 使用django身份验证重置密码 7 年前 |
![]() |
Norgul · Laravel密码代理外观 7 年前 |