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_Authentication_Session Cookies_Spoofing - Fatal编程技术网

Php 使用更多cookie而不仅仅是会话哈希进行身份验证的原因?

Php 使用更多cookie而不仅仅是会话哈希进行身份验证的原因?,php,security,authentication,session-cookies,spoofing,Php,Security,Authentication,Session Cookies,Spoofing,我通常在一个使用公告板软件的社区里闲逛 我正在查看这个软件在我的浏览器中保存为cookie的内容 如您所见,它保存了6个cookies。其中,我认为认证的重要性是: ngisessionhash:当前会话的哈希 ngipassword:密码的散列(可能不是普通密码) ngiuserid:用户的id 当然,这是我的假设。我不确定ngilastactivity和NgilastVisite是否出于相同的原因使用 我的问题是:为什么要使用所有这些cookie进行身份验证?我的猜测是,生成会话哈希可能很容

我通常在一个使用公告板软件的社区里闲逛

我正在查看这个软件在我的浏览器中保存为cookie的内容

如您所见,它保存了6个cookies。其中,我认为认证的重要性是:

  • ngisessionhash:当前会话的哈希
  • ngipassword:密码的散列(可能不是普通密码)
  • ngiuserid:用户的id
  • 当然,这是我的假设。我不确定ngilastactivity和NgilastVisite是否出于相同的原因使用

    我的问题是:为什么要使用所有这些cookie进行身份验证?我的猜测是,生成会话哈希可能很容易,所以使用hashedpassword和userid可以增加安全性,但是cookie欺骗又如何呢?我基本上把所有的基本信息都留给了客户

    你觉得怎么样

    更新#1

    这些饼干的内容就是我认为它们包含的内容。我不确定。 当然,如果调用cookie密码并包含哈希值,我猜是hashedpassword。可能是密码+盐

    我主要担心的是,这些解决方案在受到cookie欺骗攻击时会泄露大量信息

    更新#2
    这个问题不想批评这些特定软件的工作方式,但是,通过这些回答,我只想了解更多关于在web环境中保护软件的信息。

    会话不是持久的。饼干很好吃

    更新#1:我没有使用过vBullettin,但它看起来像经典的“记住我”功能

    更新#2:


    是的,这是一个“记住我”的功能,我 问他们为什么要这样做 方式

    好吧。。。如何实现“记住我”功能?你显然需要使用cookies,我想这很清楚。现在,你储存什么

    最简单的方法是以明文形式存储用户和密码,并执行常规身份验证。这是你可以使用的最不安全的机制之一,但有些网站确实是这样做的

    第二种稍微不那个么简单的方法是存储用户和密码的散列,并执行常规身份验证的修改版本。虽然没有前一种方法那么糟糕,但仍然存在一些问题;例如,没有有效的方法来禁用或终止服务器上保存的cookie

    第三种方法是用“记住的”会话保存数据库表,用一个长的唯一字符串标识每个会话,并将这些字符串存储在cookie中。字符串可以是随机的,也可以是计算的,但是,当然,随机性的优点是,即使您知道算法,也无法猜测字符串

    通过在服务器中存储日期、IP地址和其他数据,可以实现进一步的安全性

    正如我所说,我对vBulleting一无所知,但他们似乎在使用方法2或方法3

    更新#3:

    这些饼干的内容是什么 我想它们包含了。我不确定 关于它。当然,如果你叫饼干的话 输入密码并包含一个哈希值my 猜测是hashedpassword。可能是吧 可能是密码+盐。[…]我的主密码 关注的是这些解决方案 当你在一个 cookie欺骗攻击

    成功的cookie欺骗允许您完全模拟用户,这样您就可以进入控制面板并享受免费自助餐,从而使cookie内容无关


    我不知道他们是存储了一个加密密码还是仅仅是一个名字。

    这里有一个问题,你担心什么?你在建立某种认证系统吗? 我还认为在cookie中包含用户id和密码可能是一个安全问题。 用户id是编码的还是整数?

    • Cookie应该尽可能小,以保证您在服务器上的身份信息的安全

    • Sessionhash、session_id或sid是您的唯一id(您在服务器上的会话)。其余的cookie可以很容易地隐藏在服务器端

    • 在cookies中保存密码哈希是一个安全问题。你应该避免这样

    • 最后4个cookie来自谷歌广告


    注:无论如何,大多数公告栏都不是很好的软件。

    之所以会出现这种情况,是因为会话和登录cookie可能有不同的生命周期

    想象一下每天有数百万用户的网站。该网站不会将您的会话存储一年,只是为了在您下次回来时将您重新登录。 他们使用登录cookies来实现这一点


    这些曲奇也称为“记住我”曲奇。

    也许我的问题不清楚。我没有问他们为什么一般都用饼干。我已经询问了cookie的配置。为什么他们会使用哈希会话、哈希密码和用户ID。为什么会这样。是的,这是一个“记住我”的功能,我问他们为什么这样做。因为他们做错了。您可以通过在服务器上的会话cookie和会话表上设置TTL来控制会话TTL。我已更新了答案。每次我这样做,你回答说你已经知道了。最好先知道你已经知道的;-)我也更新了我的问题,所以我希望现在清楚我在寻找什么:)ngivbpassword是密码的散列??真的?!在每个加密请求中发送密码散列是个坏主意……是的,这是我的:Pcb17eee800v1361cee7985d731673c8g@shfx当前位置实际上是一个散列。我更新了我的问题,因为可能不清楚这些是我的假设。除了学习目的外,例如在本例中,您应该尽可能重复使用现有的身份验证框架,该框架通常包括一个安全的“记住我”实现。例如,看看哪个是框架不可知的,哪个是数据库不可知的。不,我不是在建。但我正在攻读计算机工程硕士学位,我花了我的一部分时间