Rai*_*ain 8 php authentication
我正在考虑编写自己的身份验证脚本,但我对安全性知之甚少.
从我阅读的文章来看,它看起来通常涉及用盐哈希密码并将其存储在数据库中.然后,当用户请求登录时,密码被哈希并与数据库进行比较.如果匹配,则用户的数据存储在$ _SESSION中.
但是,我不知道这是否安全.我读了一些关于在数据库中存储会话密钥的内容,但我不确定它是如何工作的,或者如何实现它.
有人可以解释如何实现安全身份验证吗?
另外,对于我可以合并的PHP身份验证库是否有任何建议,这些建议易于学习而不是自己编写?
要记住的事情:
对于身份验证,您需要跟踪连接到(通常)与系统进行身份验证的"用户".这需要知道标识符(用户名,电子邮件或其他一些唯一令牌)和密码短语.将用户名和密码短语存储在某处,但绝不存储密码而不先保护它:不要使用带有盐的消息摘要算法(如MD5或SHA1).请改用bcrypt.虽然在这里使用框架并不是一个坏主意,但并不总是依赖框架来做正确的事情.
对于授权,您需要跟踪用户正在执行的操作并执行权限检查以查看是否允许他们执行他们正在尝试的操作.这可以通过多种不同的方式实现,并且所有这些都是特定于域的 - 您不会经常找到它的简洁例子,尽管您可以找到许多框架来帮助您.
对于记帐,您需要记录用户执行的操作.这是任何应用程序中最常被忽略的部分,但是当发生不好的事情时,从Web服务器访问日志中获取和重建它是非常关键的知识是一场噩梦.同样,这是特定于域的,但是一个好的框架应该可以简化它的实现.
最后,将所有这三个结合在一起就是用户的会话.当您在PHP中调用'session_start()'时,它会将会话标识符作为cookie发送到客户端,并将文件存储到服务器的硬盘驱动器中,其中包含该$_SESSION
用户的内容.您还可以配置PHP以覆盖默认功能并使用session_set_save_handler保存会话数据.然后,您可以将该信息存储到数据库中.
TL; DR:使用类似CodeIgniter,Drupal,Yii或其他一些积极开发的解决方案的框架.绝大多数框架都可以完成您需要的任何内容,如果不需要,可以非常轻松地修改它们.不要为此创建自己的框架; 使用已经可用的.
归档时间: |
|
查看次数: |
12742 次 |
最近记录: |