PHP 登录脚本(安全但不像银行金库)

标签 php mysql login-script

正在寻找 php 登录脚本。我搜索了stackoverflow并看到了很多帖子,但是谁能推荐最好的方法?另外,如果我想使用哈希,检索时如何解码密码?我的 iPhone 应用程序使用相同的数据库,目前密码以普通文本存储(我知道这不是很安全)。

另外,如果我实现一个重定向到 info.php 的登录页面,你如何阻止用户在没有登录的情况下直接进入 info.php 页面, session 控制?

期待听到您的意见。非常感谢。

最佳答案

我的回答有点晚了,但我还是会发帖,我知道这并不能直接回答问题,但它是相关的。以下是关于登录安全的几点说明。

记住我

您最好重新哈希哈希密码,并将重新哈希存储在用于自动登录用户的 cookie 中。当您重新哈希密码时,使用特定于浏览器的内容作为种子,例如浏览器类型。这将有助于防止 cookie 被盗(通过人们窥探网络流量)。这有助于防止任何使用彩虹表的机会。

session

注意 session 劫持:http://en.wikipedia.org/wiki/Session_hijacking

CSRF

跨站请求伪造 - 在您登录后实现,但需要注意一些事项,因为它只影响登录的成员:http://en.wikipedia.org/wiki/Cross-site_request_forgery

HTTPS

应该在发送登录请求的页面上使用 HTTPS - 它不必在您输入登录详细信息的页面上!

散列

您可以在客户端使用 javascript 对密码进行哈希处理,这只会保护成员(member)在不使用 HTTPS 时通过网络传输密码时不会被盗。这很好,因为许多人经常在许多网站上使用相同的密码。缺点是:您无法检查服务器端的密码长度,如果禁用了 javascript,它们将无法登录(尽管您可以在一定程度上围绕它进行编程)。几年前,雅虎曾经(可能仍然会)这样做。

当您在服务器上收到密码时,它通常会使用种子重新散列并存储在数据库中。这更安全,因为即使人们知道哈希值,他们仍然无法登录!只有原始密码会重新散列为允许用户登录的相同散列。

键盘记录器

如果您想绕过键盘记录器(或大多数键盘记录器),您可以通过添加 JavaScript 小键盘/键盘来实现。然后用户单击字母和数字以使用鼠标而不是键盘输入密码,这意味着键盘记录器很难记录密码。

知道某事,拥有某事,是某事

三个级别的安全性。某人知道的东西,例如密码,某人拥有的东西,例如电话(谷歌使用两步验证完成前 2 个),以及某人的东西,例如指纹。您满足的这些越多,您的安全凭证就越好 - 远射!!!

机器人

计算机有时会尝试暴力破解快速登录页面(必须快,就像密码不正确一样,脚本会暂停甚至仅 1 秒,这大大减少了机器人可以进行的总登录尝试。为了帮助阻止这种情况,您可以将不正确的登录暂停 1 或 2 秒(就像 linux 那样),或者您可以生成一个捕获结果,表明机器人在 X 次不正确的登录后很难解决(就像谷歌那样)。

这里是要点,但我敢肯定还有其他要点。

关于PHP 登录脚本(安全但不像银行金库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3974838/

相关文章:

php - 清理用户提交的文本以使其良好且可读?

php - 何时使用 SQL_NO_CACHE

php - 你如何在 MySQL/PHP 中存储和搜索数字间隔?

php - Symfony2 Monolog 电子邮件只有一些异常(exception)

php - MySQL 数据库中的父子结构或序列化数组?

mysql - SQL:具有相同主键的两个表

javascript - 如何将套接字信息自动添加到MySQL

php - CodeIgniter 3.0 的登录系统

javascript - vue js中登录成功后如何重定向到dashboard组件页面(登录组件)?

php - 简单的 if() 没有按预期工作