繁体   English   中英

使用php和mysql登录/注册系统

[英]Login/Registration System with php and mysql

我想用PHP和mysql创建一个简单的用户登录/注册系统。 除了用户登录和退出所需的信息之外,我不需要获取任何信息。 我想确保系统安全。

我目前理解它应该如何工作的方式是:

注册

用户输入他们的电子邮件地址和密码以及确认密码

PHP脚本确保密码匹配,并且电子邮件是有效地址,并且不在数据库中。

它会将密码和随机盐一起散列,并将盐和散列密码存储在数据库中。 (php的md5功能是否适用于此?我不太确定这部分是如何工作的。)

将电子邮件确认代码存储在数据库中,并将给定的电子邮件地址发送回包含该代码的网站以进行验证?

登录

用户输入他们的电子邮件地址和密码

服务器在数据库中查找电子邮件并检索salt。 然后使用用户刚刚提供的密码对salt进行哈希处理,以查看它是否与数据库中的密码相匹配。

登录后如何使会话保持不变。 有PHP会话? 一块饼干? 什么应该存储在cookie中以便在访问之间记住用户?

我基本上只想验证我所描述的过程是一种准确而安全的用户注册/登录方式。 另外,什么是一些有更多信息的好教程。

php的md5功能适合这个吗?

MD5不再被认为是安全的; 考虑使用PHP的新内置密码散列和bcrypt算法,该算法具有可变的计算复杂性: PHP password_hash()password_verify()

登录后如何使会话保持不变。 用php会话? 一块饼干? 什么应该存储在cookie中以便在访问之间记住用户?

理想情况下,您将使用PHP会话在单次访问期间维护状态,如果您希望“记住我的登录”选项,您将使用包含足够信息的cookie来验证返回用户并重新启动新会话。 2004年有一篇关于登录cookie的最佳实践的好文章: 持久登录Cookie最佳实践 您可能还对更现代(2015)的安全实施“记住我”复选框的解决方案感兴趣。

除此之外,我认为你描述的一切都很好。

关于一些缺失考虑的一些注意事项:

PHP会话通常已使用cookie:会话ID存储为一个。

会话可能被劫持; 你还应该采取措施减少可能性(首先阅读“ PHP:使用存储为cookie的令牌防止会话劫持? ”和“ 防止会话劫持的最佳方法是什么? ”)。

与劫持相关的是修复 ,攻击者选择会话ID。 有两种方法可以解决这个问题:设置session.use_only_cookies (PHP中的默认值> = 5.3)并在用户使用session_regenerate_id登录时更改会话ID。

另请参阅问题“ PHP会话安全性 ”和文章“ PHP安全指南:会话 ”。

如果你想要一个现成的解决方案

用户蛋糕在php5中

非常安全..而且稳定。

由于登录系统是网站不可或缺的一部分,如果被黑客入侵,你就会被搞砸。 除非您出于教育目的而这样做,否则我建议您找一个由具有该领域经验的人创建的系统。 你晚上睡得很香。

固体预建登录系统的一个例子是tank auth ,它是为Code Igniter框架编写的。 您可能想看看这个人如何设计系统,以便在您决定编写自己的内容时获得有关重要事项的想法。

另外,从经验来看,从头开始编写登录系统需要花费更多时间,而不是学习代码点火器框架和安装tank auth。

这是一个建议:考虑使用一个本身提供此类功能的现成框架。 他们经过了试验和测试。 看看Kohana 它有一个Auth模块,负责照顾身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM