问题标签 [session-hijacking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
236 浏览

php - 会话管理和安全

这是我当前的会话管理:

我知道更改 IP 问题的计划仅使用 IP 地址的前 3 部分。但我担心的是攻击者能够嗅探标头等。那我就不会被保护了吧?如果我是受害者网络中的攻击者,我只需在嗅探一个响应标头后发出一个快速 GET 请求,我将获得重新生成的随机数。真的有办法防止这种情况吗?

如果它不会太多,我也希望对我的方法有所了解。如何避免这种情况?我错过了什么大事吗?

0 投票
1 回答
51 浏览

session - 这听起来如何?会话和 Cookie?

Cookie 和会话都有利有弊。但我在想,当用户登录时如何使用他们的用户名和密码创建一个会话,但是当他们注册时,他们会得到一个唯一的“访问令牌”。

因此,当他们登录时,它将创建一个带有访问令牌的 cookie,以及一个带有用户名和密码的会话。

然后,我将使用会话中的用户名和密码以及 cookie 中的访问令牌扫描数据库以查找用户。

我希望这可以防止会话劫持。

0 投票
1 回答
809 浏览

cakephp - 试图了解 CakePHP cookie 和身份验证

我正在尝试找出 CakePHP cookie 并满足我稍微不寻常的身份验证要求。

我有一个基于 CakePHP 的数据收集系统,现在它正在与一个用 COTS 软件构建的报告系统集成。报告系统需要进行访问控制,除非我想复制两个系统中的所有用户帐户,否则我需要报告系统能够确定用户是否在我的 CakePHP 系统中进行了身份验证。

报告系统允许我在客户端的报告请求第一次到达时加载一个 Java 类并执行一个函数。所以我的想法是

  1. 检查传入的报告请求并提取我的 CakePHP 站点用于身份验证/会话识别的 cookie
  2. 从 Java 函数向带有此 cookie 的 CakePHP 站点中的“reportauth”操作发送请求
  3. CakePHP 中的 reportauth 操作然后检查用户是否登录到 CakePHP 站点,并将加密响应返回给标识用户角色的 Java 函数

我可以获取 cookie,在请求中发送它,然后我可以分别在 PHP 和 Java 之间共享加密信息。

但是,当我在我的 Java 请求中使用“新”cookie(我的浏览器在新登录后重复向 CakePHP 站点发送请求的 cookie)时,响应显示用户未登录。如果然后我在浏览器中重新加载该站点,则我已注销。我怀疑 cookie 中可能有一些关于用户代理 (?) 的额外信息会导致 Java 来源的请求被抛出并且该会话为了安全而被破坏,但我对系统不够了解。我想我可能会看到 CakePHP 可以防止会话劫持(这通常会让我很高兴)。

谁能告诉我是否有办法解决这个问题?最好是不涉及 CakePHP 中的自定义身份验证组件,因为数据收集站点已经上线,而且我的报告截止日期不远了。

非常感谢任何帮助。

0 投票
3 回答
582 浏览

php - PHP会话劫持

可能重复:
PHP Session Fixation / Hijacking

我一直在$_SESSION大量使用 superglobal。

然而情况是这样的:

用户登录后,我想跟踪他的 ID(MySQL 表)。我可以轻松地将 id 插入$_SESSION['id'] = $user_id;

毕竟,我可以在我网站上的页面中使用该变量。我的想法是 - 用户可以将 ID 欺骗到另一个。如果我看到有一个简单的数字,那么我可以稍微更改一下,看看会发生什么 - 我想防止这种情况发生,因为它可能会导致很多问题,因为用户 ID 将用于添加、删除、编辑数据库中的条目.

session_regenerate_id()足以让我的会话免受劫持吗?

结论: Cookie 只存储会话标识符 - 所有值都在服务器上,永远不会传递到客户端。 在 StackOverflow 上阅读有关会话固定/劫持的信息

0 投票
1 回答
1546 浏览

facebook - 在浏览器中访问 Facebook cookie

当我在javascript:alert(document.cookie)URL 栏中输入时,我只能看到一些 facebook 为我的帐户设置的 cookie。

我认为这是因为其他 cookie 只是 http。

  • 第一个问题:这是真的吗?一些 Facebook cookie 只有 http,这就是我无法通过 javascript 访问它们的原因。当我查看 cookie 时,在 Web Developer Firefox Add on 中,我可以看到更多的 cookie。例如:“xs”cookie 通过 javascript 是不可见的,只能通过 Web 开发人员插件查看。

  • 第二个问题:我如何通过javascript访问所有cookie,如果插件可以做到(访问所有cookie),为什么javascript不能做到?

  • 第三,如果我不能使用 javascript 访问所有 cookie,我应该如何访问它们?

0 投票
2 回答
872 浏览

asp.net - 表单身份验证是否比在 ASP.NET_session 中存储用户身份更安全(会话劫持)

根据我对会话劫持工作方式的了解,我认为 Forms Authentication 与在 ASP.NET 会话中存储用户身份验证信息相比没有任何优势。表单身份验证和 ASP.NET 会话都使用经过哈希处理的 cookie 来验证完整性,但都无法防止黑客窃取 cookie 并伪装成用户。那么就安全性而言,是否有任何理由使用表单身份验证而不是在 ASP.NET 会话中存储身份验证信息?

0 投票
1 回答
10202 浏览

php - PHP中正确的会话劫持预防

我知道这个话题已经讨论了很多,但我还有一些具体的问题没有得到解答。例如:



所以,我的问题是

  • 是否ini_set提供足够的安全性?
  • 是否可以保存用户的IP和导航器,然后每次加载页面时检查以检测会话劫持?这会不会有任何问题?
  • 使用session_regenerate_id()正确吗?
  • 使用session_id()正确吗?
0 投票
2 回答
518 浏览

php - PHP 防止会话固定/劫持

我正在维护一个在数据库中存储信用卡号的低流量商店网站。这是不对的(甚至我认为是合法的),所以我正在改变数字的存储方式。

网站的结构方式,信用卡信息页面发布到自己,验证数据,将数据存储在数据库中,然后将用户重定向到 cc 验证页面,在该页面验证 cc 并下订单。之后,它们再次被重定向到订单完成页面。无论如何,为了从 cc 信息页面获取 cc 号码到验证页面,我正在考虑使用会话,但我担心漏洞并试图调查它们(我正在阅读这个 ref。这个) . 我可以在会话中存储 cc 号码,在下一页检索它,使用它,然后unset()它会在几秒钟内消失(还要注意,这些页面使用 SSL)。就像是:

抄送信息页面:

cc验证页面:

只有卡号存储在会话中,其余的 cc 信息在数据库中。尽管我不认为有人可以仅使用 cc# 做很多事情,但仍应尽可能确保它的安全。

鉴于我使用session.use_trans_sid = 0and session.use_only_cookies = 1(会话标识符仅通过 cookie 而不是 URL 处理(不知道为什么我需要两者)),并且鉴于我使用这个特定的会话变量,这段代码是否容易受到会话固定的影响?重新生成会话 ID(之后还是之前?)session在这种情况下我设置了 cc# 是否有益?我猜是的,由于此时协议是 SSL,我还猜测一旦session重新生成,我就受到 SSL 的保护?

所以,我的主要问题是,按照我的网站的这些指南,熟练的攻击者是否会相当困难地固定/劫持会话来获取用户的 cc# 存在的时间量(大约 3-15 秒)?如果没有,如果可能的话,我怎样才能做到这一点?

0 投票
1 回答
1496 浏览

javascript - 将第三方站点的 HTTP 会话从服务器传递到客户端

假设我的 Web 应用程序代表向我的应用程序提供凭据的用户执行操作,因此该应用程序可以对第三方服务进行 API 调用。顺便说一句,这是为了向这个第三方网站发布产品报价(有点像 eBay,但规模较小)。

现在,使发布变得容易的一种超级方便的方法是重用复杂的 Web 表单,第三方服务必须接受对经过身份验证的用户提供的产品。这个想法是填充他们的 Web 表单并将客户端浏览器重定向到它,以便用户可以使用复杂且熟悉的 Web 表单在那里编辑内容。这将是最好的用户体验和最少的实施工作。

但是,这不是一个记录在案的方法。更重要的是,它不能以简单的方式工作,例如从请求参数(GET 或 POST)填充表单字段。Web 表单不能那样工作。

可能有替代方案。我的应用程序可以代表用户打开与第三方应用程序的会话,提交所有数据以便将其存储在他们的数据库中,然后向用户的浏览器发送它需要接管我的服务器应用程序在他的服务器上打开的会话所需的所有数据代表。请注意,我还没有尝试过;我认为如果第三方应用程序将会话绑定到 IP 号码(无论是否声音,应用程序可能会这样做),它可能会失败。

但是不可能让打开 HTTP 会话的服务器程序将接管该会话所需的所有信息写入 HTML/Javascript 文档并将该文档发送到用户的浏览器,Javascript 在浏览器中执行并组装这样的请求直接在第三方表单上使用浏览器时组成的,我一直在使用 HttpFox 观察?

所有信息,即一切 HTTP;显然不可能将服务器的 IP 号传递给客户端......但是所有的 cookie 和参数。然后,在浏览器中执行的 Javascript 将不得不使用我以某种方式在文档中传递的信息(可能在脚本部分中)来编写对第三方网站的请求,该请求直接进入服务器应用程序打开的会话. 这意味着来自我的域的文档将设置 cookie(添加请求标头),然后让用户的浏览器执行该请求。

所以换句话说,技术上是否可以将会话从服务器传递到客户端?

你会如何在 Javascript 中做到这一点?

更新

根据另一个问题的答案:您不能为另一个域设置 cookie。允许这样做会带来巨大的安全漏洞。表明我不是前端开发人员。

还没有放弃。XmlHttpRequest对象来了。也许这可以被滥用于我的邪恶目的?

第二次更新

所以我尝试了XmlHttpRequest. 坏消息(对我和这个特殊情况):它似乎无法使用XmlHttpRequest,因为(使用当前的 Firefox)我精心伪造的请求是根据似乎将成为跨域资源的 W3C 标准的内容重写的共享,因此简单地删除了标头,Cookie而虚拟标头则简化为. 现在坦率地说,这正在破坏游戏。我很失望。MoinGurkeAccess-Control-Request-Headers: gurke,moin

0 投票
1 回答
964 浏览

javascript - 使用 Socket.IO,在发送 JavaScript 事件时防止客户端劫持 - 使用 SignalR?

使用 Socket.IO,当其他客户端执行某些活动时,客户端会通过对 Socket.IO 服务器的 JavaScript 调用得到通知。

该消息被广播给所有客户端,客户端逻辑决定谁看到通知。(另一种选择是在服务器上维护一组相关客户端,并且只send()针对这些客户端 - 更好吗?)。

如何构建系统以防止有人劫持代码并向服务器发送重复通知?(某种标记化发送?)仅使用会话 ID 是不够的,因为有人可以合法登录,然后使用该会话尝试关闭系统。

而不是为此使用 JavaScript(避免客户端劫持的可能性),另一种方法可能是使用 SignalR 从代码隐藏场景中发送通知。仍在研究这个,但欢迎提出一些讨论/建议。