问题标签 [httpsession]

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 投票
1 回答
414 浏览

security - HttpSession 安全

servlet HttpSession 存储在哪里?

将敏感信息存储在 HttpSession 属性中是否安全。

用户可以恶意修改会话属性吗?

0 投票
1 回答
512 浏览

asp.net - 用于附加数据的 ASP.NET 表单身份验证 Cookie 和会话

应用程序后台 安全性:应用程序都托管在私有外联网(和/或本地内联网 - 取决于安装实例)上。因此,虽然安全性很重要,但它并不像它是 Intranet 上的应用程序那么重要。然而,重要的是系统不能轻易被黑客入侵或劫持。

应用程序:该应用程序分为两部分:-

  • 类库 (dll)
  • 身份验证前端 ASP.NET 应用程序

该 dll 是前端身份验证应用程序的一部分,将添加到其他需要用户身份验证的应用程序(“消费者应用程序”)中。

身份验证应用程序是所有用户、他们有权访问的应用程序以及基于其用户名的权限级别的中央存储。

对于安装了 dll 的消费者应用程序,当最终用户点击要求他们登录的页面时,消费者应用程序会将它们与 appid 一起触发到身份验证应用程序 login.aspx 页面,用户登录,如果他们拥有所需的权限,然后是身份验证应用程序,将它们发送回消费者应用程序(通过带有加密数据的表单) - 其中包括有关用户是谁、用户名、实名、工作角色、组织等的基本数据......而且重要的是消费者应用程序的权限级别列表。

消费者应用程序然后获取该数据,并对其进行处理、解密等。并创建一个表单身份验证 cookie 并填充一个用户类和用户角色类 - 这一切都在 dll 本身内完成。

问题

现在这一切都很好,最初所有数据都存储在身份验证 cookie 中,在 cookie 的 userdata 部分中,但是这里是问题......

一个消费者应用程序(我们已经在内部编写了一个中央应用程序,可以拥有与单个用户(主要是应用程序管理员)相关联的大量权限(用户角色),因此我们需要可以保存大量数据的东西,超过身份验证 cookie 可以容纳的 4KB。

因此,我尝试将其放入会话变量中,最初是一个单个变量,其中所有发送的解密数据都放入一个名为“userdata”的会话变量中。然后我检查何时提出请求。

然而...

我遇到的第一个问题是身份验证 cookie 的寿命似乎比会话长,我想我已经通过将会话延长到 35 分钟(比 AuthCookie 长 5 分钟)解决了这个问题。

但是,当消费者应用程序程序员更改他们的代码(通过 Visual Studio 2010 在调试中运行 localhost)并刷新浏览器时,AuthCookie 仍然存在,但 Session 消失了。现在最初我使用的是默认的 InProc 会话模式,我猜这可能是问题所在。

我的假设正确吗?有没有办法以编程方式同步会话和 AuthCookie?

关于解决此问题的任何其他建议?

0 投票
0 回答
403 浏览

tomcat - 带有 SSL 的 Liferay/Tomcat 7 没有与 DNS 的会话

我有点困惑。

我已经配置了一个使用 SSL (https:8443) 的 Liferay/Tomcat 7 服务器,它可以正常工作。

一切正常,如果我通过 ip 调用服务器,比如https://192.168.4.44或 215.44.24.67。(这些只是示例......)它在我的网络浏览器中正确打开。

但是当我试图通过在浏览器中打开带有 dns 的服务器来访问服务器时,就像https://myname.mycompany.com一样,浏览器没有会话也没有 cookie。如果我在浏览器中禁用 cookie,我会陷入无限循环。

为此,我的 jsf portlet 中的图像没有被加载。如果我刷新页面,一切都会被加载,最后会有一个会话。

我在 iptables 中创建了一些条目以使用 SSL:

这里有没有tomcat专家可以帮助我?

来自奥地利的问候,

约翰

0 投票
3 回答
6110 浏览

java - 为什么我需要一个 HttpSession 来获取 ServletContext?

在 Java Servlet API 中,获取 Servlet 的唯一方法ServletContext是通过HttpSession( Javadoc ) 的实例。

如果我不想创建会话而只需要 servlet 上下文怎么办?换句话说,为什么类中没有getServletContext()方法HttpServletRequest

编辑

我知道我可以ServletContext从 servlet 本身获取,因为它在初始化期间接收它。HttpServletRequest但是,即使它链接到一个 servlet ,我也无法从一个单独的地方得到它。那么如果我有一个请求,但没有引用任何 servlet 怎么办?

0 投票
1 回答
8559 浏览

session - HttpSession 数据存储在哪里?

HttpSession是建立在 cookie 和 url-rewriting 之上的高级接口,这意味着只有一个 session ID 存储在客户端,与之相关的数据存储在服务器端。

HttpSession数据实际存储在服务器端的什么位置?在JVM内存或其他地方?我可以更改存储它的位置,例如将它们保存到内存数据库中吗?

如果它不在数据库中,当许多客户端同时处理相同的会话数据时是否存在任何并发问题?

0 投票
1 回答
1246 浏览

jsf - 在 HttpSessionListener 中初始化 JSF SessionScoped bean 时出现 StackOverflow 错误

继续我之前的问题,我试图在应用程序的会话首次启动时初始化一个会话范围的 JSF bean,因此无论用户首先访问我的 Web 应用程序上的哪个页面,用户都可以使用该 bean。我的自定义监听器:

但是,这给了我一个堆栈溢出错误。似乎该类中的put()方法SessionMap试图创建一个新的HttpSession,从而导致我的侦听器发生无限循环。如何在我的应用程序会话首次启动时初始化 JSF 会话范围的 bean,而不会遇到此问题?

我正在使用 JSF 2 和 Spring 3,在 WebSphere 7 上运行。

谢谢!

0 投票
1 回答
1569 浏览

java - 使用 HttpSessionListener 连接范围

我正在编写一个允许人们协作的 Web 应用程序。我希望我的一些服务范围仅限于协作(涉及几个人),而不是任何单独的 http 会话。我创建了一个Scope存储 bean 的自定义。为了管理 bean 生命周期,我跟踪关联的会话 ID,如下所示:

当会话关闭时,我想从与给定 bean 名称关联的活动会话列表中删除会话 ID。当设置为空时,我可以清理。

我能想到的管理会话关闭的最简单方法是使用HttpSessionListener,但我Scope和听众之间存在断开连接。我看到以下可能性:

  1. 我可以HttpSessionListener静态创建,假设一个唯一的实例,让它管理一个订阅列表,并让我的Scope实例订阅它的事件。但这似乎是多余的,我不喜欢单例模式。

  2. 如果我可以访问HttpSession中的Scope,我可以将 添加Scope到存储在会话中的列表中,并让侦听器通知该列表的成员会话即将结束。但是我看不到如何在Scope实例中获取会话对象(而不仅仅是它的 id)。

  3. 我可以让我Scope实现HttpSessionListener接口,从而直接更新它的状态,但我不知道如何以编程方式注册一个监听器。有没有公​​开的方式来做到这一点?

  4. 有没有更好的办法?

谢谢你的帮助,

基因

0 投票
1 回答
16812 浏览

servlets - 我可以在 servlet 中手动删除 HttpSession 吗?

我学习了一个 JSP 类,我们了解到在使用 HttpSession 之前,我们应该始终删除它的所有属性。所以我的一位同学问 - “我们用完之后永久删除 HttpSession 怎么样?”

所以,我的问题是“可以删除 HttpSession 吗?”

据我目前所了解的...... HttpSession 是由 servlet 容器创建的,与 HttpServletRequest 和 HttpServletResponse 相同。我们通过 HttpServletRequest 得到它,但我们不能手动删除它。相反,我们可以设置超时以使会话结束。由于我们无法删除它,因此我们需要确保在使用之前清理会话。我对么?

谢谢!

0 投票
4 回答
9142 浏览

asp.net-mvc - 在 ASP.NET 会话中存储任何内容都会导致 500 毫秒的延迟

问题:

当您在 ASP.NET 站点中使用会话时,几乎同时加载多个请求时会导致显着延迟(500 毫秒的倍数)。

更具体地说,我的问题

我们的网站将 session 专门用于其 SessionId。我们使用这个键来查找包含用户信息等的数据库表。这似乎是一个很好的设计,因为它存储了最少的会话数据。不幸的是,如果您在会话中不存储任何内容,则 SessionId 会发生变化,因此我们存储Session["KeepId"] = 1;. 这足以说服 SessionId 不改变

在看似无关的注释中,该站点通过控制器操作提供定制的产品图像。如果需要,此操作会生成图像,然后重定向到缓存的图像。这意味着一个网页可能包含图像或其他资源,通过 ASP.NET 管道发送数十个请求。

无论出于何种原因,当您 (a) 同时发送多个请求并且 (b) 以任何方式涉及会话时,您最终将随机延迟 500 毫秒,大约是 1/2 的时间。在某些情况下,这些延迟将达到 1000 毫秒或更长,并且总是以约 500 毫秒的间隔增加。更多请求意味着更长的等待时间。我们有几十张图片的页面可能会等待 10 多秒才能看到一些图片。

如何重现问题:

  1. 创建一个空的 ASP.NET MVC Web 应用程序
  2. 创建一个空的控制器动作:

    /li>
  3. 制作一个 test.html 页面,其中包含一些执行该操作的 img 标签:

    /li>
  4. 运行页面并在 firebug 中观察快速加载时间:

    每个图像的加载速度都相当快

  5. 执行以下操作之一(两者的结果相同):

    • 将一个空的 Session_Start 处理程序添加到您的 Global.asax.cs

      /li>
    • 在会话中放置一些东西

      /li>
  6. 再次运行该页面并注意响应中偶尔/随机的延迟。

    一些请求经历了长时间的延迟

到目前为止我所知道的

我的问题

如何使用会话但避免这些延迟?有谁知道修复?

如果没有修复,我想我们将不得不绕过会话并直接使用 cookie(会话使用 cookie)。

0 投票
1 回答
208 浏览

spring - HTTPSessions 和 Spring


我正在使用 spring 开发一个 web 应用程序。

这就是问题所在,假设我有这三个网址,

www.sample.com/login.do

www.sample.com/homePage.do

www.sample.com/about.jsp

我想要做的是 about.jsp 页面应该能够访问,即使用户登录与否。如果用户没有登录并尝试访问 homePage.do,他应该被重定向到 login.do 页面,反之亦然。

我认为为此我需要 HTTPSessions,但我不知道如何在 Spring 中管理 HTTPSessions。

我可以使用一些过滤器来完成这个吗?如果是这样,你能指导我完成吗?

我希望使用 Spring MVC 和/或 Spring Annotations。