Php 存储登录信息的最佳实践

Php 存储登录信息的最佳实践,php,security,Php,Security,你们怎么储存登录信息 可能,在会话中存储记录的状态。在cookies中输入用户名。但保护这些关键信息不落入坏人之手的最安全做法是什么 将用户名也存储在会话变量中。会话存储在服务器上,cookie中只有一个标识号 如果还需要保护会话号,请使用HTTPS/SSL加密HTTP连接。但是,这将要求您从经批准的颁发者处购买SSL证书。如果您使用用户名进行标识,请不要将其存储在cookie中。因为cookies是客户端存储,可以进行操作。将其存储在会话(服务器端存储)中 通常,当身份验证成功时,您将用户标识

你们怎么储存登录信息


可能,在会话中存储记录的状态。在cookies中输入用户名。但保护这些关键信息不落入坏人之手的最安全做法是什么

将用户名也存储在会话变量中。会话存储在服务器上,cookie中只有一个标识号


如果还需要保护会话号,请使用HTTPS/SSL加密HTTP连接。但是,这将要求您从经批准的颁发者处购买SSL证书。

如果您使用用户名进行标识,请不要将其存储在cookie中。因为cookies是客户端存储,可以进行操作。将其存储在会话(服务器端存储)中


通常,当身份验证成功时,您将用户标识信息存储在会话中,并且只将会话ID传递给客户端。这样,用户信息就可以在服务器端得到保护。

如果存储登录信息,则需要采取措施避免会话劫持。将会话id与users IP和browser useragent字符串等内容一起存储在数据库中,并检查每次内容是否匹配


如果您也在存储密码,那么请首先查看它们,通常会进行一些基本的模糊处理,如先添加密码以避免彩虹表攻击。

将用户ID存储在会话变量中;如果需要缓存权限级别之类的内容,也可以将其存储在那里。将会话ID存储在cookie中;使用。如果安全性/隐私非常重要,那么对所有内容都使用SSL(并且使用仅限SSL的cookie;另外,请查看标题,很快就可以在Firefox中使用)。否则,最好至少通过SSL发送登录名。(不幸的是,SSL需要来自主流浏览器信任的提供商的证书,这可能会很昂贵。)请确保在登录时启动新会话以防止


使用盐散列存储密码;最好是像SHA-256这样的慢动作,或者重复几千次。(如果你需要你的代码是非常可移植的,或者在旧版本的PHP上运行,MD5/SHA1也可以,但是它会让无知的人抱怨你使用的是一个已经被“破坏”的散列。

@Mitch,那么如何在下次登录时恢复信息,甚至IP可能会被更改“或SHA-256重复几千次”重复散列不是一种不好的做法吗?@NidhinDavid这肯定比不重复散列要好:-)使用HMAC或专门为密码存储创建的东西(如bcrypt或scrypt)肯定更好但是迭代的SHA散列没有实际的漏洞,而非迭代的SHA散列有相当明显的漏洞。