gpt4 book ai didi

php - 如何使用 cookie 和 session 创建安全的登录系统?

转载 作者:可可西里 更新时间:2023-10-31 23:25:22 26 4
gpt4 key购买 nike

我有一个包含用户 ID、用户名和密码的 mysql 表,如果给定的密码与给定的用户名匹配,我将创建 3 个 cookie:

  • 用户名
  • 用户名
  • userpassword (md5) - 我创建它是因为当用户保存重要设置时(不要求用户填写表格)我会从 cookie 中重新检查密码和用户名。

我听说这不安全,我应该只使用 cookie 来存储 session ID,并将此数据存储在 session 中,但代码看起来如何?

请解释一下代码,因为我是 PHP 的初学者。哦,我想长期记住用户,我不喜欢每次都需要重新登录的网站。请帮助我并解释为什么一种方法比其他方法更安全?

谢谢!

感谢您的回答!我需要回答我的问题:我的网站不需要比简单论坛更高的安全性,所以有人可以提供只有基本安全级别的代码吗?

最佳答案

首先,当您说要在数据库中存储“密码”时,请确保您存储的是加密 密码。如果我的密码是“12345”,而你将“12345”存储在你的数据库中,那么访问你的数据库的人就有可能看到每个人的密码,这非常糟糕。

因此,至少,使用 SHA1 或其他一些哈希算法并将那个存储在数据库中。

但是关于您的实际问题,PHP 支持内置的“ session ”,因此您无需担心低级机制。

在脚本的顶部调用 session_start();(通常在配置文件或头文件的开头附近,或者随处包含的其他一些共享脚本),然后您可以存储和在 $_SESSION 超全局数组中检索信息。

所以你可以这样写:

$_SESSION['username'] = 'bob';

然后在其他页面上:

echo 'Hello, ' . $_SESSION['username'];

该 session 信息将在任何已运行 session_start(); 的页面上可用,并且存储您在 $_SESSION 中的任何内容 在服务器上,因此其他人不可能仅通过窥探我的浏览器 cookie 来查看该信息。

但是,这并不意味着 session 本身就是完全安全的。 session 通过在 cookie 中存储“ session key ”来工作,因此我的 key 可能是“946433D47A824675DCB87AA372F31A7D9B255530F87A79264E416C253E9AB00E”。每次我访问页面时,PHP 都会检索与该键关联的所有 $_SESSION 数据,并将其提供给您。

但是,如果有人发现了该 key (同样是通过窥探我的浏览器 cookie,或者只是“无意中听到”我通过开放的 Wi-Fi 网络向服务器发出的请求),他们可以发送相同的 key 和 PHP会兴高采烈地让他们访问我的 session 。

如果您只允许通过 https 的流量,这个问题会在很大程度上得到缓解,但仍然绝对值得了解正在发生的事情以及在安全问题的情况下如何利用它。

关于php - 如何使用 cookie 和 session 创建安全的登录系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5764359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com