当前位置: 首页 > 知识库问答 >
问题:

向Tomcat添加HSTS特性

韩佐
2023-03-14

好好信任你们。

我的web应用程序运行在tomcat 6.0.43上,不使用apache或nginx。

我已经强制我的网络从超文本传输协议重定向到https使用:

  1. URL重定向到/webapps/ROOT/index。jsp

<security-constraint>
<web-resource-collection>
  <web-resource-name>Protected Context</web-resource-name>
     <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint></security-constraint>

在下面的何处添加此类代码

标题添加严格-运输-安全"max-age=15768000"

还是tomcat没有这个功能?或者我需要在我的每个java web应用程序控制器中进行修改。


共有3个答案

巫马自明
2023-03-14

使用url-重写。

  1. 创建url重写配置文件并将其放入web应用程序的web-INF/classes目录中

请注意,这不是特定于HSTS的:您可以使用url重写进行任何操作。

钱宇
2023-03-14

您可以使用过滤器添加它。将以下代码段添加到web。xml:

<filter>
    <filter-name>HSTSFilter</filter-name>
    <filter-class>security.HSTSFilter</filter-class>
</filter>

然后在你的webapp中创建一个过滤器:

package security;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class HSTSFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {
        HttpServletResponse resp = (HttpServletResponse) res;

        if (req.isSecure())
            resp.setHeader("Strict-Transport-Security", "max-age=31622400; includeSubDomains");

        chain.doFilter(req, resp);
    }
}

也可以使用全局web添加过滤器。xml(conf/web.xml)。

段干飞翮
2023-03-14

如果您能够使用Tomcat 7或8,您可以激活内置的HSTS过滤器。取消在tomcat/conf/web.xml中的过滤器定义

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <async-supported>true</async-supported>
</filter>

并添加一个有用的最大年龄参数:

<init-param>
    <param-name>hstsMaxAgeSeconds</param-name>
    <param-value>31536000</param-value>
</init-param>

不要忘记取消对筛选器映射的注释:

<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
 类似资料:
  • 我想添加一些在WebApp之前加载的库,比如将Jar添加到。我怎么能那么做? Eclipse中的等效项: 信息:validateJarFile([...]\WEB-INF\lib[...].jar)-jar未加载。参见Servlet规范2.3,第9.7.2节。违规类:javax/servlet/servlet.class

  • 问题内容: 我设法在Mac上安装了spyder并可以正常运行,但是我想添加一些默认情况下不包含的模块(mahotas和pymorph)。 我通过在终端上的easy_install进行了安装,并且两者似乎都安装了,没有任何错误消息。从终端运行python并使用 import mahotas 和 import pymorph 可以正常工作而不会出现错误消息。但是,当我在spyder中的脚本中运行相同的

  • 我是马文的新手。所以保持冷静;) 在我的公司,我们正在使用Sonatype Nexus存储库管理器。 现在我发现了两个大型存储库,其中包含我正在搜索的特殊工件(JCraft-Jsch): http://search.maven.org/ (http://mvnrepository.com/artifact/com.jcraft/jsch/0.1.53) 现在,我想知道如何将上面的一个(或两个)存储

  • 我已经下载并安装了Tomcat9,但是在Eclipse>Window>Preferences>Server>Runtime Environment上,单击Add后,我只看到Tomcat7和Tomcat8,而看不到Tomcat9。 我所做的:1)将tomcat 9安装到本地服务器;2)将eclipse更新到Mars(最新版本为2015-11-25);3)安装eclipse“JST服务器适配器”和“J

  • 我试图在运行时环境中添加一个tomcat服务器。我成功安装了tomcat。我已经有了Java EE eclipse,但是在我点击窗口下的搜索之后-

  • 问题内容: 我们有一个简单的项目,我们从套接字读取数据,并希望用即将到来的数据填充表,但是我们找不到找到将行添加到尚未创建的对象的方法,只能在以下位置找到添加行的方法:表的创建时间。 是否可以向中动态添加行,或者有更好的替代对象来处理这种显示数据的方式? 编辑 :非常感谢您的回答。 他们三个看起来都很有前途,但是我只选择一个,我认为最好的就是纪尧姆的。 问题答案: 您应该创建一个自定义。A 实际上