问题标签 [session-cookies]

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 投票
3 回答
859 浏览

javascript - CSRF 漏洞/cookie 问题

只是想从知道的人那里得到意见。我正在考虑 CSRF 漏洞,以及我所知道的最流行的对抗它的方法。该方法是在返回的 html 中创建一个令牌,并添加一个具有相同值的 cookie。因此,如果脚本尝试发布帖子,他们会希望have to guess the token thats embedded in the web page它成功。

但是,如果他们针对的是特定网站,为什么他们不能只使用一个脚本

  1. 在页面上调用 get (即使脚本无法访问 cookie 也会返回)
  2. 解析 html 并获取令牌
  3. 调用包含该令牌的帖子(返回的 cookie 将被发回)
  4. 他们在用户不知情的情况下成功提交了表单

脚本不需要知道 cookie 的内容,它只是利用了 cookie 一直来回发送的事实。

我在这里想念什么?这不可能吗?如果你仔细想想,我认为这很可怕。

在此行下方不需要阅读即可回答问题:)

这个漏洞基于这样一个事实,即身份验证是基于 cookie 完成的,我认为这是当前进行身份验证的主要方式。

我能想到的另一个解决方案是在页面级别进行身份验证。因此,当他们登录时,返回的 html 中将包含该令牌。他们单击的每个链接都包含该令牌,因此当 Web 服务器收到请求时,它可以识别用户/会话。它的问题是,如果他们使用除此之外的任何导航,他们将是“未经身份验证”(例如输入 url),它在 url 中看起来也不好看,因为它可能看起来像这样:

https://www.example.com/SuperSecretPage/1/123j4123jh12pf12g3g4j2h3g4b2k3jh4h5g55j3h3

但我确实明白,如果安全更重要,那么漂亮的 URL 就排在第二位。

我对cookies一无所知,但是如果用户代理对他们的cookies更加小心怎么办?

例如,如果发送的 cookie 取决于选项卡怎么办?我们现在都使用标签冲浪,对吧?那么如果 cookie 的范围是选项卡呢?因此,如果我在选项卡 1 上打开了我的银行网站并且我在选项卡 2 上冲浪,则在选项卡 2 上调用获取/发布的任何脚本都只会发送在选项卡 2 中累积的 cookie。

或者如果cookies被存储/域。因此,当我在 example.com 上时,任何返回的 cookie 都会进入 example.com cookie 集合。然后当我在 www.mybankingsite.com 上时,所有的 cookie 都会被放入 mybankingsite.com 集合中。因此,如果我访问 example.com 并运行一个调用 get/post 的脚本,用户代理将只发送 example.com cookie。这与发送请求域的 cookie 不同。例如,如果脚本在 example.com 的网页中调用 mybankingsite.com 的获取,则用户代理将不会发送 mybankingsite.com cookie。

我知道我无法控制用户代理的工作,但我只是在探索可能性

0 投票
3 回答
1885 浏览

asp.net - 防止多个用户使用同一个浏览器登录同一个域

所以这是一个 ASP.NET 问题,两个用户使用同一台机器,相同的浏览器。

  1. 用户 1 登录域。
  2. 用户 1 更改了一些数据而不保存它。
  3. 用户 2 在单独的选项卡中登录域。
  4. 用户 1 切换回他的选项卡并保存数据。
  5. 用户 1 实际将数据保存到用户 2 中!!

这是由以下机制引起的:

  1. 同一浏览器中的不同选项卡似乎共享相同的会话 ID。
  2. 我们将用户身份验证存储在 cookie 中,并且 cookie 在选项卡之间共享(同一域)

因此,当用户 1 请求保存时,由于 cookie 已更新为用户 2,因此将其识别为用户 2。

所以我想知道是否有任何其他方法可以防止这种情况发生,除了: 1. 使用 cookieless 会话,以便会话嵌入在 uri 中。2. 始终在页面中包含一个隐藏字段以指示哪个用户拥有该页面。

问候,

0 投票
1 回答
1608 浏览

glassfish - GlassFish v3 JSESSIONID 多个子域和 TLD

我们正在构建一个 Web 应用程序来服务多个区域网站 TLD。此外,Web 应用程序还支持数以千计的动态子域。示例包括:

虽然我们可以理解不同的域 TLD 会导致新会话,但上述后两个示例开始出现问题,这也会导致新会话实例。例如,如果用户:

  1. 转到:www.example.co.uk 创建一个新会话,然后...
  2. 点击链接:fred123.example.co.uk 创建一个新会话,然后...
  3. 点击一个链接:sam99.example.co.uk 一个新的会话被创建...

3 次点击 ==>> 3 次会议!!!!

问题似乎是由于 GlassFish v3 自动将 JSESSIONID 的域设置为主机请求的 FQDN。

需要的是至少将主机名部分从域值中剥离,以具有如下域值:

有谁知道如何实现这一点。我发现了以下问答,但在我们的案例中,子域 TLD 并不完全匹配:

处理 JSP 会话的问题

因此,静态配置 sun-web.xml 或使用 Servlet 3.0 解决方案的解决方案似乎没有帮助。此外,创建过滤器响应包装器也不起作用,因为 JSESSIONID cookie 是在应用程序服务器的较低级别分配的,并且不会暴露给 Web 应用程序以进行拦截。

我认为我仅有的另外两个选择是:

a) 修补将 JSESSIONID cookie 域值设置为 FQDN 的 GlassFish v3 代码,以便发生一些剥离或

b) 在 Sun Web Server 7.0 反向代理层中做一些事情,我们必须重写 set-cookie 标头中返回的 JSESSIONID cookie 域值,但是我无法找到有关如何执行此操作的示例

任何人都可以帮助解决这个问题吗?任何线索/帮助将不胜感激!

0 投票
3 回答
2085 浏览

php - 我怎样才能使 PHP 会话/cookie 无限期

我正在使用一个登录系统来设置下面的会话变量/cookie。Chrome 可以让您轻松查看 cookie,显然将其标记为“当我关闭浏览器时”过期的 PHPSESSID。果然,当我登录时,关闭浏览器,然后打开一个新的浏览器会话,我就不再登录了。

无论浏览器是否关闭,我怎样才能使用户保持登录状态?我想让用户保持登录状态(如果可能的话,永久保持登录状态),除非故意注销。

0 投票
3 回答
4965 浏览

php - 如何从 PHP 中的另一个会话实例中读取会话值?

我在 PHP 中做一些事情,我必须读取另一个会话实例的会话值。例子

浏览器1:$_SESSION['value']="user1";

Browser2: $_SESSION['value']="user2";

Browser1 需要从某个请求中获取“user2”值。该请求还将包括 cookie(key, value)。

我怎样才能做到这一点?

谢谢,瓦尔

0 投票
1 回答
390 浏览

asp.net - Previous Next ASP.NET 应用程序和会话超时重定向

我有一个应用程序,我试图在会话超时时重定向,因此在我的母版页中,我正在检查重定向的会话变量是否为空,但问题是我有来自母版页和派生的 Page_Load 的其他页面(派生)页面我也在那里引用了一些会话变量,我观察到派生页面(内容)的 PAGE_LOAD 事件首先触发,母版页 PAGE_LOAD 稍后触发,因此错误弹出“未设置对象引用”。

顺便说一句,我正在 LOGIN_BUTTON_PRESSED EVENT 上编写以下代码。

请通过示例提出解决此问题的解决方案。

0 投票
1 回答
568 浏览

django - 在 django 中,如果用户注销,是否会删除所有会话数据?

我需要跟踪有关用户的一些信息,但希望将其保留一段固定的时间,比如一周。

如果我通过 request.sessions 设置此值,并且用户注销,如果他们稍后重新登录,我可以检索它吗?这一切都假设我的会话通常设置为在 30 天内到期,如果用户 neVer 注销。

在考虑上述问题的同时,我决定将数据存储在一个表中,但我仍然想知道上面的答案以供参考。由于不可靠,我还决定不使用 cookie。

0 投票
1 回答
252 浏览

php - 基于 Cookie 的菜单选择

我是 PHP 新手,想知道如何设置和使用 Cookie 来存储页面之间的用户菜单选择。

基本上,当用户说单击名为“关于我们”的菜单选项时,我想以某种方式通过 cookie 存储此选择,然后我可以在其他地方使用?

仅供参考,我正在使用 jquery .click 函数来确定选择了哪个菜单选项,即

谢谢。

0 投票
3 回答
13101 浏览

django - 如何在 Django 中设置 HttpOnly cookie?

如何在 Django 中设置 HttpOnly cookie?

是否值得努力防止 XSS?

0 投票
4 回答
9691 浏览

php - 使用 PHP 在一个实例中进行多个会话?

我有一个项目,我想在一个浏览器中创建两个会话 cookie。第一个会话将唯一标识一个人,第二个会话将在用户之间共享会话内的事件。我一直在为此使用数据库,但希望在会话结束时数据消失。系统内没有登录。

除了创建 cookie 系统来复制功能之外,有没有办法做到这一点?

例如,我们将有两个会话 cookie:

name=someRandomUUIDsession=valueSharedBetweenUsers.

我不想name与多个用户共享会话,但session会话会。想法?