Jakarta ee Tomcat 7上会话属性上的Tomcat问题

Jakarta ee Tomcat 7上会话属性上的Tomcat问题,jakarta-ee,tomcat7,session-variables,Jakarta Ee,Tomcat7,Session Variables,我正在努力解决这个问题。我有一个java web应用程序,在localhost上运行良好。当我在Tomcat上部署应用程序(启用SSL)时,当我登录时,我会丢失每个会话属性 请求通过以下方式发送:request.getRequestDispatcher(“/somepath”).forward(请求,响应) 提前谢谢 G从https切换到HTTP时,您将丢失会话。。 这取决于你的逻辑。。但我的简单建议是,用户登录后,只需保留https即可 当用户注销并且用户注销页面不需要https时,只需使用H

我正在努力解决这个问题。我有一个java web应用程序,在localhost上运行良好。当我在Tomcat上部署应用程序(启用SSL)时,当我登录时,我会丢失每个会话属性

请求通过以下方式发送:request.getRequestDispatcher(“/somepath”).forward(请求,响应)

提前谢谢


G

从https切换到HTTP时,您将丢失会话。。 这取决于你的逻辑。。但我的简单建议是,用户登录后,只需保留https即可

当用户注销并且用户注销页面不需要https时,只需使用HTTP

以下是关于这些事情的一些信息:

How would secure implementations look like and where can one expect problems?
这些规则旨在提供SSL保护,即针对能够拦截和更改数据包的对手的保护。 子组件

You probably into mixed mode in some scenarios
如果在HTTPS页面中,加载任何脚本或纯HTTP中的CSS资源,则会使SSL的好处无效(而不仅仅是减少)

通常,在HTTPS页面中,通过HTTPS从可信主机加载每个子组件(框架、脚本、样式、图像)。 饼干

一个特别不幸的错误是忘记让所有的cookie都“安全”。如果忘记使用此属性标记所有与安全相关的cookie,则会使SSL安全性无效。(显然,登录/会话cookie是安全敏感的。)

由于您希望您的网站完全通过HTTPS,请将所有cookie标记为“安全”

一个问题是,即使是“安全”cookies也可以被cookies HTTP非安全cookies所取代!更糟糕的是,浏览器甚至不会告诉您cookie是来自HTTP还是HTTPS

您可以假设对手无法读取安全cookie。但您不能假设浏览器通过HTTPS发送的cookie是您之前发送的安全cookie。 全站点SSL保护

通过HTTPS提供内容,不仅针对某些“敏感”页面,而且针对整个站点,您将培训用户仅通过HTTPS使用您的站点,这对安全性非常好

为了让用户能够输入HTTP URL,您肯定会执行从HTTP到HTTPS的HTTP重定向,因此唯一未加密的HTTP流量是HTTP重定向(在通常情况下,没有攻击)

这里的问题是,如果用户习惯于键入HTTP URL,并且每次都无法检查是否正确重定向到相应的HTTPS站点:可以拦截和修改数据包的攻击者可以更改HTTP请求以重定向到另一个误导性HTTPS站点,或者假设用户通常不会检测到HTTP/HTTPS差异:这是使用HST的一个很好的理由。 其他网站安全原则

SSL密码保护是网站安全的重要组成部分,尤其是保护密码的保密性。但这并不是特定于网站的安全要求的终结

提醒一下,还有一些其他基本安全原则: 不可信数据的安全处理

在网页中获取用户输入并输出时,必须应用适当的转义以避免XSS漏洞。为此,您必须了解HTML页面的不同部分具有不同的语法(普通HTML、属性值、URL具有完全不同的语法),因此需要不同的转义

与任何其他接收外部不可信输入的程序一样,您必须正确验证每个输入,并以一种在出现异常字符时不会出现错误行为的方式存储和输出它(请参阅:SQL注入)。 网上验证授权

您不能仅依靠cookie(或HTTP身份验证)来验证来自HTTP客户端的特定订单是否得到授权:如果用户在同一浏览器中浏览两个网站,则这样做会使您的网站受到来自另一个网站的CSS攻击。 安全设计之我见

网站安全性的问题通常是由于不了解这些网络协议的不同具体要求,或者由于保护除一个“入口点”之外的所有“入口点”而引起的

在你设计一个“安全”的网站之前,你应该了解所有这些要求;然后你应该系统地应用它们。您的设计应该简单、规范、易懂且易于审核

最好的样式是您不能忘记应用转义文本,该文本将被解释为HTML/HTML属性/SQL/SQL“regexp”/shell命令/shell regexp。如果可能,最好的方法是防止不打算解释为HTML/HTML属性/SQL/SQL“通配符expr”/shell命令/shell regexp的变量数据出现在需要转义的上下文中:避免转义更安全,因为您不能忘记转义


我知道我在这里偏离了主题。。。所以我现在就停下来。我只是想澄清一下,HTTP安全性并没有停留在“100%通过SSL”。

我知道这个答案太晚了。但这可能会帮助其他人

以下是Java Servlet规范3.0->会话->会话范围的摘录:

HttpSession对象的作用域必须在应用程序(或servlet)上 (上下文)级别。底层机制,例如用于 建立会话,对于不同的上下文可以相同,但是 引用的对象(包括该对象中的属性)必须 容器不能在上下文之间共享

用一个例子来说明这一要求:

如果servlet使用 RequestDispatcher调用另一个Web应用程序中的servlet,任何会话 为被调用的servlet创建并对其可见的servlet必须与那些可见的servlet不同 发送到调用servlet

因此,本质上,每当Servlet上下文改变时,会话信息也会改变。使用RequestDispatcher会更改Servlet上下文,因此您会丢失所有会话信息。

我找到了您