You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IBM WebSphere 9.0.5.13安全头配置求助:需通过securityheaders.com检测

针对IBM WebSphere 9.0.5.13配置安全头的解决方案

一、全局配置(所有部署应用生效)

通过WebSphere控制台配置全局安全头,需注意参数名称的正确性(你之前使用的旧参数在9.x版本已失效),步骤如下:

  1. 登录WebSphere管理控制台,导航至 服务器 > 服务器类型 > WebSphere应用服务器 > [目标服务器名称] > Web容器设置 > Web容器
  2. 点击定制属性,添加以下属性:
    • Strict-Transport-Security:
      • 属性名:com.ibm.ws.webcontainer.addStrictTransportSecurityHeader
      • 属性值:max-age=31536000;includeSubDomains;preload
    • X-Frame-Options:
      • 属性名:com.ibm.ws.webcontainer.XFrameOptions
      • 属性值:SAMEORIGIN(或DENY,根据业务需求选择)
    • X-Content-Type-Options:
      • 属性名:com.ibm.ws.webcontainer.addXContentTypeOptionsHeader
      • 属性值:nosniff
  3. 保存配置后重启服务器,此步骤必须执行,否则配置不会生效。

二、应用级配置(单个应用生效)

若只需针对特定应用配置,修改该应用的WEB-INF/web.xml文件(WAR包或EAR中Web模块的对应路径),添加以下配置:

1. 配置STS、X-Frame-Options、X-Content-Type-Options

<!-- X-Content-Type-Options -->
<context-param>
    <param-name>com.ibm.ws.webcontainer.addXContentTypeOptionsHeader</param-name>
    <param-value>nosniff</param-value>
</context-param>

<!-- X-Frame-Options -->
<context-param>
    <param-name>com.ibm.ws.webcontainer.XFrameOptions</param-name>
    <param-value>SAMEORIGIN</param-value>
</context-param>

<!-- Strict-Transport-Security -->
<context-param>
    <param-name>com.ibm.ws.webcontainer.addStrictTransportSecurityHeader</param-name>
    <param-value>max-age=31536000;includeSubDomains;preload</param-value>
</context-param>

2. 配置Content-Security-Policy(CSP)

WebSphere没有内置的CSP上下文参数,需通过自定义过滤器实现:

第一步:添加过滤器配置到web.xml

<filter>
    <filter-name>CSPFilter</filter-name>
    <filter-class>com.yourcompany.filter.CSPFilter</filter-class>
    <init-param>
        <param-name>cspPolicy</param-name>
        <!-- 根据应用需求调整规则,避免语法错误导致检测不通过 -->
        <param-value>default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CSPFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

第二步:编写过滤器Java类

将以下代码编译后放入应用的WEB-INF/classes目录(或打包到Jar中):

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CSPFilter implements Filter {
    private String cspPolicy;

    @Override
    public void init(FilterConfig config) throws ServletException {
        this.cspPolicy = config.getInitParameter("cspPolicy");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpResp = (HttpServletResponse) response;
        httpResp.setHeader("Content-Security-Policy", cspPolicy);
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {}
}

三、排查之前配置失效的原因

  1. 参数名称错误:你之前使用的com.ibm.ws.webcontainer.ADD_STS_HEADER_WEBAPP是WebSphere 8.5及更早版本的参数,9.x版本已废弃,需使用com.ibm.ws.webcontainer.addStrictTransportSecurityHeader。
  2. 未重启服务器:修改Web容器定制属性后必须重启服务器,配置才会加载。
  3. 应用级配置覆盖全局:若应用的web.xml中存在相同参数,会覆盖全局配置,需检查应用的web.xml是否有冲突设置。
  4. HTTP插件拦截:若前端使用WebSphere HTTP服务器插件,检查plugin-cfg.xml或HTTP服务器配置文件中是否有移除安全头的规则。

内容的提问来源于stack exchange,提问作者Mainak1976

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:50:26