Php 使用更多cookie而不仅仅是会话哈希进行身份验证的原因?
我通常在一个使用公告板软件的社区里闲逛 我正在查看这个软件在我的浏览器中保存为cookie的内容 如您所见,它保存了6个cookies。其中,我认为认证的重要性是:Php 使用更多cookie而不仅仅是会话哈希进行身份验证的原因?,php,security,authentication,session-cookies,spoofing,Php,Security,Authentication,Session Cookies,Spoofing,我通常在一个使用公告板软件的社区里闲逛 我正在查看这个软件在我的浏览器中保存为cookie的内容 如您所见,它保存了6个cookies。其中,我认为认证的重要性是: ngisessionhash:当前会话的哈希 ngipassword:密码的散列(可能不是普通密码) ngiuserid:用户的id 当然,这是我的假设。我不确定ngilastactivity和NgilastVisite是否出于相同的原因使用 我的问题是:为什么要使用所有这些cookie进行身份验证?我的猜测是,生成会话哈希可能很容
这个问题不想批评这些特定软件的工作方式,但是,通过这些回答,我只想了解更多关于在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当前位置实际上是一个散列。我更新了我的问题,因为可能不清楚这些是我的假设。除了学习目的外,例如在本例中,您应该尽可能重复使用现有的身份验证框架,该框架通常包括一个安全的“记住我”实现。例如,看看哪个是框架不可知的,哪个是数据库不可知的。不,我不是在建。但我正在攻读计算机工程硕士学位,我花了我的一部分时间