关于安全性:在 Wildfly 10 中配置 HTTP 标头

Configure HTTP Headers in Wildfly 10

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

HTTPS Strict Transport Security (HSTS)
X-XSS-Protection
X-Frame-Options
Strict-Transport-Security
Content-Security-Policy
X-Content-Type-Options

我有一个配置文件(standalone.xml),所有配置都在其中。我需要在此处添加标题的配置。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    <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>


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

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

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

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

1
2
<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 等漏洞。

1
2
<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 中打开应用程序。

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