我是 PHP 开发的新手。而且我没有任何同事可以讨论 PHP。所以我会在这里发布我的问题。
我已经为自己做了一个登录脚本,女巫看起来很像这个网站上的脚本:http ://www.phpeasystep.com/phptu/6.html
我的问题是。这是一种安全的方法吗?有没有关于 PHP 登录脚本的好教程?在会话中存储信息的方法有问题吗?
我是 PHP 开发的新手。而且我没有任何同事可以讨论 PHP。所以我会在这里发布我的问题。
我已经为自己做了一个登录脚本,女巫看起来很像这个网站上的脚本:http ://www.phpeasystep.com/phptu/6.html
我的问题是。这是一种安全的方法吗?有没有关于 PHP 登录脚本的好教程?在会话中存储信息的方法有问题吗?
关于您发布的教程的几个问题。
If you want to do it right read The definitive guide to form-based website authentication and implement it's suggestions.
这根本不安全:
绝对不安全,它将密码存储为文本,没有散列。检查密码散列(至少 sha256,从不 md5 或 sha1)和盐渍散列将对密码进行编码,因此在成功的 db 攻击的情况下没有人能够获得密码。加盐会增加一些安全性,您只需在每个密码中添加一些字符串并对其进行哈希处理。您可以为每个用户自定义 salt,并为服务器 salt 使用一些不在键盘上的特殊字符。这将使密码非常安全。对 SQL 查询使用 PDO 和参数可以使其免受 SQL 注入攻击。
至于存储在会话中 - 好的,但永远不要存储密码,密码被插入,散列,并且永远不会再次使用,至少在另一个登录之前。
通过查看该脚本,我会说,只要您实现带斜杠功能并使用散列算法 (SHA256) 来存储密码,那么您就会走在正确的路线上。您可以通过在哈希中添加盐来进一步扩展它,如果有人攻击您的数据库并执行 SELECT * FROM Password WHERE Password = 'HASH'; 这将保护您 这将返回所有用户名并允许攻击者尝试使用这些凭据登录。SQL 注入和 XSS 是网站上常见的攻击类型,可以通过登录系统执行。我建议阅读它们。
其他资源:
http://www.webstockbox.com/php/7-tutorials-on-how-to-create-a-php-login-system/
不,不按原样存储密码要安全得多。您最好散列密码(即使用 md5())并将散列存储在数据库中。要进行登录,您需要从表单发送密码,对其进行哈希处理并与存储在数据库中的哈希值进行比较。
SHA512 hashing is the best way with salt if possible but i have found loads about this and using PDO but i cant make a register form that uses the sha512 hash any ideas reply please