无nginx等负载均衡时如何为Oracle WebLogic配置安全头?
完全可以直接在Oracle WebLogic层面完成所有安全头配置,不需要依赖Nginx等任何前置负载均衡/反向代理组件,针对XSS防护需要的各类安全头都可以通过WebLogic原生能力实现。实际操作方法根据版本差异分为两类,都是生产环境验证过的可行方案:
方案1:管理控制台全局配置(适配WebLogic 12.1.3及以上版本,零代码改动)
这个是独立部署场景下最省事的配置方式,一次配置对服务器上所有部署的应用全局生效,不需要逐个修改应用包:
- 登录WebLogic管理控制台,在左侧域结构导航栏依次进入「环境」-「服务器」,选中需要配置的目标托管服务器实例
- 在服务器配置页切换到「配置」-「HTTP」标签,拉到页面最下方找到「自定义响应头」配置块
- 点击「新建」,根据业务需要依次添加XSS防护相关的安全头参数,示例配置如下:
- 头名称:
X-XSS-Protection,值:1; mode=block,用于开启主流浏览器内置的反射型XSS拦截能力 - 头名称:
Content-Security-Policy,值:default-src 'self'; script-src 'self',从根源限制页面可加载的脚本、资源来源,是防存储型、反射型XSS的核心配置(可根据业务实际需要放开第三方资源的加载权限) - 头名称:
X-Content-Type-Options,值:nosniff,禁止浏览器MIME类型嗅探,防止绕过XSS过滤的攻击 - 头名称:
X-Frame-Options,值:SAMEORIGIN,禁止跨域iframe嵌套,配套防点击劫持类衍生攻击
- 头名称:
- 配置保存后不需要重启服务器,即时生效。
额外技巧:如果需要隐藏WebLogic默认响应头中暴露的服务器版本信息,只需要在自定义响应头中新增一条名称为
Server、值为自定义文案(比如通用Web服务标识)的规则,即可覆盖默认的版本暴露信息,避免攻击者通过版本号匹配已知历史漏洞。
方案2:应用web.xml配置(适配所有WebLogic版本,灵活可控)
如果使用的是12.1.3之前的老版本WebLogic(比如常见的10.3.6版本),没有控制台原生的自定义响应头配置能力,可以直接在目标应用的web.xml中通过Servlet 3.0规范原生支持的响应头配置节点添加参数,不需要编写Java过滤器、不需要修改业务代码:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 原有应用的servlet、filter等配置保持不变 --> <http-response> <after> <!-- 依次添加所有需要的安全响应头 --> <add-header> <header-name>X-XSS-Protection</header-name> <header-value>1; mode=block</header-value> </add-header> <add-header> <header-name>Content-Security-Policy</header-name> <header-value>default-src 'self'</header-value> </add-header> <add-header> <header-name>X-Content-Type-Options</header-name> <header-value>nosniff</header-value> </add-header> <add-header> <header-name>X-Frame-Options</header-name> <header-value>SAMEORIGIN</header-value> </add-header> </after> </http-response> </web-app>
修改完web.xml后重新打包部署应用即可生效,这个方案的配置粒度更细,可以给不同应用配置符合自身业务场景的独立安全头策略,不会对其他应用造成影响。
配置验证方法
所有配置完成后,可以直接通过curl -I 你的应用访问地址命令查看返回的响应头列表,确认配置的安全头都正常返回,也可以在浏览器开发者工具的网络面板中查看对应请求的响应头,验证XSS防护相关的头是否正确加载。
内容的提问来源于stack exchange,提问作者Rick_y
相关产品推荐
相关产品推荐

