Session 安全登录页面和用户会话

Session 安全登录页面和用户会话,session,login,security,Session,Login,Security,我的第一个问题是关于为提供安全登录页面而采取的标准步骤。我熟悉的两件事是设置密码字段以防止有人监视,以及通过https传输数据。要拥有一个完全安全的登录站点,还应该包括哪些内容 此外,一旦我们登录,会话是如何维护的,即当用户单击某个内容时,我们的服务器知道它应该再次生成基于用户的内容?考虑到什么时候登录,我们还需要维护https和其他安全措施吗 谢谢你的回复恐怕你可以就此写一本书 仅解决会话问题:会话通常由随每个连续请求一起发送的某个cookie来维护。由于用户是否登录的信息基于会话cookie

我的第一个问题是关于为提供安全登录页面而采取的标准步骤。我熟悉的两件事是设置密码字段以防止有人监视,以及通过https传输数据。要拥有一个完全安全的登录站点,还应该包括哪些内容

此外,一旦我们登录,会话是如何维护的,即当用户单击某个内容时,我们的服务器知道它应该再次生成基于用户的内容?考虑到什么时候登录,我们还需要维护https和其他安全措施吗


谢谢你的回复

恐怕你可以就此写一本书


仅解决会话问题:会话通常由随每个连续请求一起发送的某个cookie来维护。由于用户是否登录的信息基于会话cookie(或独立用户cookie),因此被盗cookie可用于模拟登录。因此,您需要在会话的其余部分保持https连接(以保护cookie),或者至少采取一些次要的安全预防措施(例如验证会话是否来自与以前相同的IP地址)。

恐怕您可以就此写一本书


仅解决会话问题:会话通常由随每个连续请求一起发送的某个cookie来维护。由于用户是否登录的信息基于会话cookie(或独立用户cookie),因此被盗cookie可用于模拟登录。因此,您需要在会话的其余部分保持https连接(以保护cookie),或者至少采取一些次要的安全预防措施(例如验证会话是否来自与以前相同的IP地址)。

是的,密码字段和https绝对是登录的好方法。 我现在想不出还有什么别的办法,除了验证码,以确保它不是一个机器人脚本,试图猜密码

关于会话管理: 有一个“$\u SESSION”变量,它对每个连接都是唯一的,在调用“SESSION\u start();”后,由PHP自动维护在脚本的开头

这个命令非常重要,否则$\u会话将始终为空…如果我没有弄错的话,它会要求浏览器提供标识信息(SessionID或类似的东西),然后将存储的信息与SessionID进行匹配

您可以像使用任何其他超全局变量一样使用此会话变量

$_SESSION['ID'] = $ID;
$_SESSION['AccessRights'] = $AR;
等等。 实际的会话数据以独占方式存储在服务器端,除了PHP脚本之外,不能进行任何更改。在$\u会话中存储您需要了解的有关该用户的所有信息,您应该会没事的

关于“保持HTTPS”:这不应该是必要的,因为所有“关键数据”都已经传输了

不过请注意,一旦处理敏感信息或个人数据(如更改密码或其他类似信息),您可能需要再次返回HTTPS。 然而,根据经验,HTTPS的实际开销在今天的系统中是相当小的,除非你期望有大量的流量,否则保持它“开启”从来都不是一个坏主意


现在,在这个问题上我可能是错的,但这是我的观点。

是的,密码字段和https绝对是登录的好方法。 我现在想不出还有什么别的办法,除了验证码,以确保它不是一个机器人脚本,试图猜密码

关于会话管理: 有一个“$\u SESSION”变量,它对每个连接都是唯一的,在调用“SESSION\u start();”后,由PHP自动维护在脚本的开头

这个命令非常重要,否则$\u会话将始终为空…如果我没有弄错的话,它会要求浏览器提供标识信息(SessionID或类似的东西),然后将存储的信息与SessionID进行匹配

您可以像使用任何其他超全局变量一样使用此会话变量

$_SESSION['ID'] = $ID;
$_SESSION['AccessRights'] = $AR;
等等。 实际的会话数据以独占方式存储在服务器端,除了PHP脚本之外,不能进行任何更改。在$\u会话中存储您需要了解的有关该用户的所有信息,您应该会没事的

关于“保持HTTPS”:这不应该是必要的,因为所有“关键数据”都已经传输了

不过请注意,一旦处理敏感信息或个人数据(如更改密码或其他类似信息),您可能需要再次返回HTTPS。 然而,根据经验,HTTPS的实际开销在今天的系统中是相当小的,除非你期望有大量的流量,否则保持它“开启”从来都不是一个坏主意


现在,在这个问题上,我可能是错的,但这是我对这个问题的看法。

为了让网站更安全,人们可以做各种各样的事情,但即使你做到了所有这些,你也不能保证你的网站是“完全”安全的

例如,如果您在数据库中存储用户登录信息:您是否对SQL注入进行了保护?如果您的登录页面还包含注册表单:您是否有防止XSS攻击的保护措施?是否有密码必须满足的最低要求,或者用户是否可以制作自己的(通常非常糟糕且容易猜测)密码?有些事情你可以自己处理,但不幸的是,总有一些事情你不会想去防范(因为没有人会想到),直到它们被真正利用。一个站点有无数的攻击路线,也有相同数量的方法来防范它们,我花太长的时间去钻研它们(并不是说我自己对安全非常了解)

正如其他答案所指出的,会话由存储在cookie中的会话ID维护