发布后这一段时间回来,我决定在PHP中创建我自己的注册/验证能力.我希望任何人都能指出改进的缺陷/机会,特别是在会议中存储的内容......
逻辑流程是:
1 - 用户注册使用电子邮件作为用户名,"网站名称"然后构成他们将访问的任何网址的一部分,密码至少6个字符,必须包含字母和数字(我知道这可能更强)
2 - 如果用户和站点是唯一的,那么我将这两者以及随机生成的字符串(salt)存储在我的数据库的auth表中的一行中.然后,我获取用户密码,将salt连接到它,并将此salted密码的md5哈希存储在同一数据库行中
3 - 当用户登录时,我获取她输入的密码并将盐连接到它,创建一个md5哈希,并将其与我存储在数据库中的密码进行比较 - 如果它们匹配,则用户已输入正确的密码,并将其用户名写入会话
4 - 在每个请求中,我使用会话中存储的用户名来查询数据库并读取与此用户关联的站点名称.然后我将它与url本身的站点名称进行比较,如果它们匹配,我设置一个可供其余或脚本访问的变量(不是全局变量,它只能由我的控制器读取,它决定用户是否可以看到特定页面)如果两个站点名称不匹配,则将用户重定向回登录
我担心的是有人可以写入会话,因此如果他们知道他们注册的用户名,就可以访问人们页面吗?你会如何防止这种情况发生?
在任何人指责我疏忽之前,这是一个个人学习项目的方式 - 我不会暴露任何客户数据!