Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果PHP会话变量持续存在,为什么要使用客户端cookie_Php_Security_Session_Cookies - Fatal编程技术网

如果PHP会话变量持续存在,为什么要使用客户端cookie

如果PHP会话变量持续存在,为什么要使用客户端cookie,php,security,session,cookies,Php,Security,Session,Cookies,我对这有点陌生,所以这里是我认为我知道的(我可能错了) php会话变量可以持续足够长的时间,以便用户完成任务。如果浏览器关闭并重新打开,则必须在关闭时清除(php)会话变量后重新登录 服务器知道哪些php会话变量属于哪个客户端 拥有包含php会话ID的客户端cookie是一个漏洞 如果所有这些都是真的,并且没有其他重要的东西可以添加到混合中,那么为什么要创建一个可能被破坏的客户端cookie呢 仅仅使用会话变量不是更好/更安全吗 还是php会自动创建客户端cookie,这是易受攻击的部分?客户端

我对这有点陌生,所以这里是我认为我知道的(我可能错了)

  • php会话变量可以持续足够长的时间,以便用户完成任务。如果浏览器关闭并重新打开,则必须在关闭时清除(php)会话变量后重新登录
  • 服务器知道哪些php会话变量属于哪个客户端
  • 拥有包含php会话ID的客户端cookie是一个漏洞
  • 如果所有这些都是真的,并且没有其他重要的东西可以添加到混合中,那么为什么要创建一个可能被破坏的客户端cookie呢

    仅仅使用会话变量不是更好/更安全吗


    还是php会自动创建客户端cookie,这是易受攻击的部分?

    客户端cookie中的ID会告诉php哪个会话是您的会话

    服务器知道哪些php会话变量属于哪个客户端

    它是如何做到的?通过将会话id存储在cookie中,客户机在每次请求时将cookie发送回服务器

    如果浏览器关闭并重新打开,则必须在关闭时清除(php)会话变量后重新登录


    过期的不是PHP会话,而是浏览器在关闭时丢弃cookie。然后,客户端就没有会话id可发送到服务器。(除非在cookie上设置了明确的过期时间,在这种情况下,浏览器将保留该时间。)(而且PHP会话最终也将过期,这一点很清楚。)

    必须使用具有会话id的cookie。 这是因为,php服务器真的不知道是谁发送了请求

    识别请求所有者的解决方案之一是cookie,其中包含会话id。只有会话id。分配给会话id的所有数据都存储在服务器、文件或数据库中。安全级别取决于会话id的使用时间和使用时间

    我们可以考虑一些在你被劫持的情况下。 会话ID长度不足 它可以为bruteforce公开您的会话。我们可以用一些计算来举个例子。假设您有一台服务器,它生成具有32位熵的会话id。您的服务器每秒可以处理1000个请求,并且您有大约1000个具有有效会话id的经过身份验证的用户

    然后,我们可以使用简单的数学公式来计算泄露会话id所需的时间(以秒为单位)

    公式取自

    经过计算,我们知道平均时间大约为0.6h

    但是使用128位熵的键(php键有更多)

    该时间将等于4.726144e+28小时1.6410222e+26年

    所以我觉得它很安全

    会话侧顶升 想象一下,您最终实现了具有强熵的会话。所以用暴力是猜不到的。您还使用https身份验证端点进行了安全保护,因此没有人可以嗅探您的密码和登录。但是web应用程序的其他部分没有https协议

    现在,若有人在公共网络中运行你们的应用程序,比如假想用户Marta,那个么使用包嗅探应用程序的人可以轻松地读取Marta的会话cookie

    为了防止这种情况,您应该使用https保护应用程序的所有部分,并使用有效的证书

    您还应该阅读安全漏洞,以确保会话足够安全

    最终答案
    是的,如果遵循安全标准,会话cookie就足够安全。

    “拥有客户端cookie,[snip]有点漏洞。”。为什么?也许我读错了,但我的印象是cookies可能会被嗅到,或者其他什么东西,允许另一个用户劫持会话?我想知道是否我根本不能使用客户端cookies,因为如果用户关闭浏览器,让他们重新登录不是问题?如果cookies可以被嗅探,则意味着所有流量都可以被嗅探(并且很可能被改变)。所以,不管有没有饼干,在这一点上都不重要,是吗?有道理。。。那么,当php创建会话时,是否存在某种自动客户端cookie链接浏览器和会话?“使用bruteforce,您可以尝试猜测会话id并窃取会话。”当以正确的方式生成会话id时,这实际上是不相关的。JWT和会话cookie一样容易被劫持。数据存储在不同的位置(在JWT而不是服务器端会话中),但在其他方面没有根本区别。当然,使用https和足够的会话id长度应该可以防止bruteforce和其他流行的劫持方法,谢谢!感谢所有回应的人