标签: jsessionid

用JRun/ColdFusion强制HttpOnly cookie

我们需要确保CF7站点上的所有cookie都设置为HttpOnly.

我们使用jsessionid来控制我们的会话,而JRun并没有将它创建为HttpOnly.

虽然可以修改现有的cookie来添加此设置,但我们需要从一开始就将其设置为HttpOnly.

有什么建议?


相关问题:为HTTPS cookie设置安全标志.

cookies coldfusion httponly jrun jsessionid

6
推荐指数
1
解决办法
4045
查看次数

每页多个有状态iframe将覆盖JSESSIONID?

寻找某人确认或反驳我的理论,即在同一域上部署指向两个不同有状态页面的两个iframe可能导致JSESSIONID被覆盖.这就是我的意思:

建立

  1. 假设您有两个页面需要HttpSession状态(会话亲和性)才能正常运行 - 部署在http://www.foo.com/ page1http://www.foo.com/ page2
  2. 假设www.foo.com是运行Tomcat(6.0.20,fwiw)的单个主机,它使用JSESSIONID作为会话ID.
  3. 假设这些页面被转换为嵌入第三方网站的两个iframe小部件:http://www.site.com/page1"/>(和/ page2分别)
  4. 假设有第三方网站希望将两个小部件放在http:// www.bar.com /foowidgets.html

可能出现以下竞争条件吗?

  1. 一位新访问者访问http://www.bar.com/foowidgets.html
  2. 浏览器开始在foowidgets.html中加载网址,包括两个iframe的'src'网址
  3. 因为浏览器针对同一主机打开了多个并发连接(在chrome/ff情况下高达6个),浏览器碰巧同时发出了对http://www.foo.com/page1http://www.foo.com的请求/第2页
  4. tomcat @ foo.com几乎同时收到两个请求,第一次调用getSession()(在两个不同的线程上)并懒惰地创建两个HttpSession,因此创建两个JSESSIONID,值为$ Page1和$ Page2.请求还将数据填充到各个会话中(将需要数据来处理后续请求)
  5. 假设浏览器首先收到对page1请求的响应.浏览器为HOST www.foo.com设置cookie JSESSIONID = $ Page1
  6. 接收到对page2请求的下一个响应,并且浏览器 使用$ Page2 覆盖 HOST www.foo.com的cookie JSESSIONID
  7. 用户点击foowidgets.html上'page1'iframe中的内容; 浏览器向http://www.foo.com/page1?action=doSomethingStateful发出第二个请求 .该请求带有JSESSIONID = $ Page2(而不是$ Page1 - 因为cookie值被覆盖)
  8. 当foo.com收到此请求时,它会查找错误的HttpSession实例(因为JSESSIONID键是$ Page2而不是$ Page1).Foobar的!

以上可以发生吗?我是这么认为的,但我希望得到确认.

如果以上显然是可行的,那么我们想要支持每页多个iframe的解决方案是什么?我们并不需要iframe共享相同的HttpSession,尽管这样会很好.如果解决方案仍然会为每个iframe规定一个单独的HttpSession,那么当然 - iframe 1最终不会引用iframe 2的httpSession状态而不是iframe.

我能想到的是:

  1. 将page1和page2映射到不同的域(操作开销)
  2. 使用URL重写而不是cookie(搞乱分析)
  3. 还要别的吗?

非常感谢,-nikita

cookies tomcat url-rewriting jsessionid

6
推荐指数
1
解决办法
3920
查看次数

jSessionId真的很独特吗?

为了提供一些上下文,我正在开发一个API来跟踪网站上的用户操作(也是用户).到目前为止,我们使用jsessionId来识别每个用户及其操作.

该API现在可以在Tomcat和JBoss上运行.

真正重要的问题是,既然我们每天分析一次所有数据,那么这个jsessionId的唯一性在一天中是否得到保证?或者,不同时,其他用户可以获得其他用户以前使用过的jsessionId吗?

提前致谢.

java web-applications jsessionid java-ee

6
推荐指数
1
解决办法
6063
查看次数

JSESSIONID存储在哪里?(JavaEE的)

我有两个应用程序 - 一个Java EE Web应用程序和一个Java SE applet.我想通过JSESSIONID(由Web应用程序创建)在applet中验证用户.

所以有一个问题 - 如何将这个JSESSIONID与特定用户相关联?

如何检查(在Web服务器应用程序端)哪个用户由这样的JSESSIONID表示?在applet中,我将从cookie中读取它,然后我想编写一个简单的Servlet,它将接受此JSESSIONID作为POST消息.此后,当JSESSIONID不好时,我想在响应中写任何内容,如果JSESSIONID是好的(即代表某人),则用户信息.

有谁知道如何做到这一点?

java applet jsp jsessionid java-ee

6
推荐指数
1
解决办法
2万
查看次数

JQuery jsession cookie未发送到服务器

我搜索了jquery论坛,stackoverflow,谷歌,bing,甚至雅虎没有成功.每隔10秒我就会尝试通过这个JQuery片段从logservlet servlet加载文本数据:

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
            var autorefresh = setInterval(function () {
                $.ajax({
                    url : "logservlet?devkey=chat",
                    success : function(data) {
                        $("#log_ta").append(data);
                    }
                });
                }, 10000);
    </script>
Run Code Online (Sandbox Code Playgroud)

问题是,在服务器端,我没有看到有效的会话,我试图跟踪会话属性.问题似乎与在JQuery的http请求的标头中缺少"Cookie JSESSIONID = xxxxxxxxxxxxxxxxxxxxxxxxxxx"有关.我从服务器获得响应头,JSESSIONID总是随每个请求而变化:

    Server  Apache-Coyote/1.1
    Set-Cookie  JSESSIONID=9EEAFA2A933E7742D8FEDADD5345B76D; Path=/CumulusServer
    Content-Length  0
    Date    Fri, 23 Mar 2012 13:02:08 GMT
Run Code Online (Sandbox Code Playgroud)

但是JQuery后来没有使用它,这里是请求头:

    Host    192.168.1.11:8080
    User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
    Accept  */*
    Accept-Language en-us,en;q=0.5
    Accept-Encoding gzip, deflate
    Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Connection  keep-alive
    X-Requested-With    XMLHttpRequest
    Referer http://192.168.1.11:8080//CumulusServer/
Run Code Online (Sandbox Code Playgroud)

这有什么问题?"$ .ajax"调用不会识别会话吗?或者,我是否会错过一些管道代码来在每个ajax请求中手动硬编码JSESSIONID?是这样,这应该怎么样?顺便说一句,当我从网络浏览器调用相同的URL时,JSESSIONID标头被发送到服务器!

感谢:D.

cookies session jquery jsessionid

5
推荐指数
1
解决办法
9005
查看次数

如何在VBA中设置和获取JSESSIONID cookie

我在Excel 2010中使用MSXML2.XMLHTTP60为Tomcat 8.5.5上托管的Java REST Web服务编写VBA Web服务客户端.

在VBA中,我希望能够JSESSIONID=E4E7666024C56427645D65BEB49ADC11从响应中获取字符串,并能够在后续请求中设置它.(想要这样做的原因是,如果Excel崩溃,似乎这个cookie丢失了,用户必须再次进行身份验证.我希望能够为用户设置最后存储的会话ID,所以如果会话是在服务器上仍然存在,它们不必在Excel客户端中重新进行身份验证.)

我看到了一些在线资源,根据这些资源,下面将拉出JSESSIONID cookie,但最后一行总是打印出来:

Dim httpObj As New MSXML2.XMLHTTP60
With httpObj
    .Open "POST", URL, False
    .SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    .SetRequestHeader "Connection", "keep-alive"
    .Send
End With
Debug.Print "Response header Cookie: " & httpObj.GetResponseHeader("Cookie")  'This should pull the JSESSIONID cookie but is empty
Run Code Online (Sandbox Code Playgroud)

当我打印时,httpObj.GetAllResponseHeaders我看不到任何包含JSESSIONID的标题.

在相同的资源中,以下应该设置所需的cookie,但它不会(我打印出服务器上传入请求的标题,并看到我的尝试没有覆盖JSESSIONID值).

httpObj.SetRequestHeader "Cookie", "JSESSIONID=blahblah"
Run Code Online (Sandbox Code Playgroud)

我可能会错过JSESSIONED如何传输的机制,以及VBA如何以及何时提取它并设置它.

如何才能做到这一点?我很欣赏任何正确方向的指针.

cookies vba web-services jsessionid session-cookies

5
推荐指数
3
解决办法
1万
查看次数

如何使用容器为具有(长期)粘性会话的应用程序进行零停机滚动更新

我试图弄清楚如何基于 JSESSIONID cookie 为具有长期交互式用户会话的 web 应用程序提供零停机滚动更新,这些会话应该是粘性的。

出于这个(和其他)原因,我正在研究容器技术,比如 Docker Swarm 或 Kubernetes。

我很难找到关于如何的好答案:

  1. 确保新会话转到最新版本的应用程序
  2. 虽然现有会话仍由它们启动的任何版本的应用程序提供服务
  3. 关闭所有会话后,正确清理旧版本

更多信息:

  • 请求链接到基于 JSESSIONID cookie 的会话
  • 会话可能会持续数天,但可以在 24 小时内从应用程序内终止它们(向用户发送通知“注销/再次登录,因为有新版本,否则会在下午 12 点自动注销” “ 例如)
  • 当然,对于应用程序的每个版本,已经有多个容器以负载平衡的方式运行
  • 我不介意容器总数的增长,例如,如果每个旧版本的容器都仍在运行,因为它们仍然会托管 1 个会话,而大多数用户已经在使用新版本的应用程序

所以,我对所需流程的想法是这样的:

  1. 安装新版本的应用程序
  2. 让所有新连接(没有 JSESSIONID cookie 集的连接)转到应用程序的新版本一次
  3. 旧版本应用程序的容器不再提供会话服务,请删除容器/....

正如我提到的,我正在研究 Kubernetes 和 Docker Swarm,但对其他建议持开放态度,但最终解决方案应该能够在云平台上运行(目前使用 Azure,但未来可能会使用谷歌或亚马逊云)

任何指示/提示/建议或想法表示赞赏

保罗

编辑:回答@Tarun 问题和一般说明:是的,我不想停机。我设想的方式是托管旧版本的容器将继续运行以服务所有现有会话。一旦旧服务器上的所有会话结束,旧服务器就会被移除。

新容器只会为在新版本开始推出后启动应用程序的用户提供新会话。

因此,举个例子: - 我在上午 9 点启动旧版本应用程序的新会话 A - 上午 10 点推出新版本。- 我继续使用会话 A,并保留托管在运行旧版本的容器上。- 中午我去吃午饭并注销 - 因为我是连接到运行旧版本的容器的最后一个会话,容器现在将被销毁 - 下午 1 点我回来,重新登录并获得新版本的应用程序

说得通?

updating jsessionid kubernetes docker-swarm sticky-session

5
推荐指数
1
解决办法
1098
查看次数

如何防止 JSESSIONID 显示在 URL 中

我已经使用 Google Datastore 在 servlet 中创建了一个登录页面,它工作正常。但有时它会在 URL 中显示 JSESSIONID。

如何阻止 JSESSIONID 通过 URL 发送?为什么它通过 URL 而不是请求消息传递?

java servlets jsessionid google-cloud-datastore

5
推荐指数
2
解决办法
2万
查看次数

Grails java.lang.IllegalStateException:getAttribute:会话已失效

我们的 grails 应用程序中出现java.lang.IllegalStateException: getAttribute: Session already invalidated少量错误。

我们尝试检查过滤器中的会话是否无效,如果是则重定向到同一页面,但这不起作用。看起来会话在请求过程中失效了。

处理此错误的正确方法是什么?我们应该在顶层放置一个错误处理程序并返回一些 http 状态吗?

grails tomcat jsessionid illegalstateexception

5
推荐指数
1
解决办法
2616
查看次数

Spring Security 如何通过各种会话创建和会话固定组合来处理 JSESSIONID?

我有一个使用 Spring Security 4.0.1.RELEASE 的基于 J2EE REST 的应用程序。不用说,除了 StackOverflow 上有针对性的问题之外,关于 和 的 Spring 文档很少sessionCreationPolicysessionFixation

我正在为 Spring Security 使用基于 Java 的配置,如下所示:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(secureEnabled=true, prePostEnabled=true, jsr250Enabled=true, order=1)
public class DefaultSecurityBeansConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
            .sessionFixation().migrateSession()
            .and()...; // additional config omitted for brevity
    }
}
Run Code Online (Sandbox Code Playgroud)

我真的只是想知道 Spring 会发生什么行为,因为它与 相关,考虑到和JSESSIONID的所有可能组合。sessionCreationPolicysessionFixation

SessionCreationPolicy枚举中可能的值为ALWAYSNEVERIF_REQUIREDSTATELESS

会话固定的可能值为newSessionmigrateSessionchangeSessionId和 …

java spring stateless jsessionid spring-session

5
推荐指数
1
解决办法
2万
查看次数