在 Wildfly 10 中配置 HTTP 标头

Posted

技术标签:

【中文标题】在 Wildfly 10 中配置 HTTP 标头【英文标题】:Configure HTTP Headers in Wildfly 10 【发布时间】:2019-10-09 20:11:59 【问题描述】:

有没有办法配置Wildfly(10个或更多)发送给客户端的Http Headers仅配置以下内容:

HTTPS 严格传输安全 (HSTS) X-XSS-保护 X 框架选项 严格的运输安全 内容安全策略 X-Content-Type-Options

我有一个配置文件(standalone.xml),其中包含所有配置。我需要在这里添加标题的配置。

【问题讨论】:

【参考方案1】:

在@merly 的回复中添加更多信息。

这些是设置安全标头以防止非法尝试修改/读取信息时的一些应用程序最佳实践。

内容安全策略 (CSP) 此标头限制浏览器加载资源的来源,包括脚本、样式和媒体。通过只允许受信任的来源和安全的 HTTPS 通道,此标头可以帮助防止 XSS 和嗅探攻击。

对于仅从单个 Web 应用程序服务器加载资源的站点,将 CSP 标头配置为仅允许来自该服务器的所有资源类型的资源。如果资源是从其他受信任的来源加载的,请创建更具体的 CSP 标头。

<filter-ref name="Content-Security-Policy"/>
<response-header name="Content-Security-Policy" header-name="Content-Security-Policy" header-value="default-src 'self'"/>

X-Content-Type-Options 此标头告诉浏览器不要通过其内容来推断资源类型,并坚持应用程序所宣传的内容类型。这可以通过防止浏览器将不可执行的内容转换为可执行的内容来缓解 XSS 等漏洞。

<filter-ref name="x-content-type-options"/>
<response-header name="x-content-type-options" header-name="X-Content-Type-Options" header-value="nosniff"/>

X-Frame-选项 如果设置了此标头,则不允许在跨域 url 中打开应用程序。

<filter-ref name="x-frame-options"/>
<response-header name="x-frame-options" header-name="X-Frame-Options" header-value="SAMEORIGIN"/>

【讨论】:

【参考方案2】:
    <subsystem xmlns="urn:jboss:domain:undertow:6.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other">
        <buffer-cache name="default"/>
        <server name="default-server">
            <http-listener name="default" socket-binding="http" max-parameters="10000" redirect-socket="https" enable-http2="true"/>
            <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
            <host name="default-host" alias="localhost">
                <location name="/" handler="welcome-content" predicate="not exists[%o,Content-Security-Policy]"/>
                <http-invoker security-realm="ApplicationRealm"/>
                <filter-ref name="Content-Security-Policy"/>                
                <filter-ref name="x-frame-options"/>
                <filter-ref name="x-xss-protection"/>
                <filter-ref name="x-content-type-options"/>
                <!--filter-ref name="content-security-policy"/-->
                <filter-ref name="strict-transport-security"/>
                <filter-ref name="my-custom-header"/>
            </host>
        </server>
        <servlet-container name="default">
            <jsp-config/>
            <websockets/>
        </servlet-container>
        <handlers>
            <file name="welcome-content" path="$jboss.home.dir/welcome-content"/>
        </handlers>
        <filters>
            <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
            <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
            <response-header name="Content-Security-Policy" header-name="Content-Security-Policy" header-value="default-src 'self'"/>   
            <response-header name="x-frame-options" header-name="X-Frame-Options" header-value="SAMEORIGIN"/>
            <response-header name="x-xss-protection" header-name="X-XSS-Protection" header-value="1; mode=block"/>
            <response-header name="x-content-type-options" header-name="X-Content-Type-Options" header-value="nosniff"/>
            <!--response-header name="content-security-policy" header-name="Content-Security-Policy" header-value="default-src https:"/-->
            <response-header name="strict-transport-security" header-name="Strict-Transport-Security" header-value="max-age=31536000; includeSubDomains;"/>             
            <!-- Add line below -->
            <response-header name="my-custom-header" header-name="my-custom-header" header-value="my-custom-value"/>
        </filters> 
    </subsystem>

【讨论】:

很高兴解释您刚刚发布的代码,因为当有人尝试阅读它时,它会被证明是有用的。与包括哪个部分解决了问题中的问题相同 我要对什么文件进行这些更改?我是整个 JBoss 生态系统的新手 有没有办法我们也可以为管理端口“9990”添加这些标头?我正在寻找的标题是: X-Content-Type-Options: nosniff X-XSS-Protection :"1; mode=block"

以上是关于在 Wildfly 10 中配置 HTTP 标头的主要内容,如果未能解决你的问题,请参考以下文章

在 WildFly 8 中转储 HTTP 请求

Wildfly 10 - 以编程方式读取配置参数

如何在 Wildfly 10 中配置数据源?

如何在 WildFly 中配置压缩日志?

WildFly 中的字符集编码

为啥 Wildfly 10 在部署时给我“jdbc:postgresql 不允许空名称段”?