在Wildfly 10中配置HTTP标头

时间:2019-05-23 09:24:50

标签: security http-headers servlet-filters wildfly-10 undertow

是否可以配置Wildfly(10个或更多)发送给客户端的Http标头,仅用于配置以下内容:

  

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

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

2 个答案:

答案 0 :(得分: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内容类型选项
该标头告诉浏览器不要通过其内容来推断资源类型,而应坚持应用程序广告的内容类型。这样可以防止浏览器将非可执行内容转换为可执行内容,从而减轻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框架选项
如果设置了此标头,则不允许在跨域URL中打开应用程序。

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

答案 1 :(得分:0)

    <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>