Sécurisation XSS
Modifié par Christian SENET le 2016/03/25 09:31
Configuration pour TOMCAT
Préconisations de sécurisation des headers HTTP
Configuration du token de session JSESSIONID à HttpOnly dans le fichier web.xml
JSESSIONID HttpOnly
<session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
</session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
</session-config>
La mise en place des directives de protection XSS relèvent généralement de la configuration d'un frontal Web. Cependant, il est possible de rajouter ces directives directement dans l'application par ajout d'une servlet filter dans le fichier web.xml de l'application
XSSFilter
<filter>
<display-name>XSSFilter</display-name>
<filter-name>XSSFilter</filter-name>
<filter-class>com.hardis.adelia.filter.XSSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XSSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<display-name>XSSFilter</display-name>
<filter-name>XSSFilter</filter-name>
<filter-class>com.hardis.adelia.filter.XSSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XSSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Paramétrage du filtre avec des valeurs spécifiques
XSSFilter
<filter>
<display-name>XSSFilter</display-name>
<filter-name>XSSFilter</filter-name>
<filter-class>com.hardis.adelia.filter.XSSFilter</filter-class>
<init-param>
<description>X-FRAME-OPTIONS value</description>
<param-name>X-FRAME-OPTIONS</param-name>
<param-value>DENY</param-value>
</init-param>
<init-param>
<description>X-Content-Type-Options value</description>
<param-name>X-Content-Type-Options</param-name>
<param-value>nosniff</param-value>
</init-param>
<init-param>
<description>X-XSS-Protection value</description>
<param-name>X-XSS-Protection</param-name>
<param-value>1; mode=block</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>XSSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<display-name>XSSFilter</display-name>
<filter-name>XSSFilter</filter-name>
<filter-class>com.hardis.adelia.filter.XSSFilter</filter-class>
<init-param>
<description>X-FRAME-OPTIONS value</description>
<param-name>X-FRAME-OPTIONS</param-name>
<param-value>DENY</param-value>
</init-param>
<init-param>
<description>X-Content-Type-Options value</description>
<param-name>X-Content-Type-Options</param-name>
<param-value>nosniff</param-value>
</init-param>
<init-param>
<description>X-XSS-Protection value</description>
<param-name>X-XSS-Protection</param-name>
<param-value>1; mode=block</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>XSSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Attribut | Valeur par défaut | Remarque |
|---|---|---|
X-FRAME-OPTIONS | DENY | |
X-Content-Type-Options | nosniff | |
X-XSS-Protection | 1; mode~=block |
Configuration pour HaProxy
Pour configurer dans HAProxy l'envoi des entêtes anti-XSS ajouter ceci à votre frontend , listener ou backend configuration :
JSESSIONID HttpOnly
rspadd X-Frame-Options:\ DENY
rspadd X-Content-Type-Options:\ nosniff
rspadd X-XSS-Protection:\ 1; mode=block
rspadd X-Content-Type-Options:\ nosniff
rspadd X-XSS-Protection:\ 1; mode=block
Configuration pour Apache Httpd
Pour configurer dans Apache l'envoi des entêtes anti-XSS pour toutes les pages , ajouter à la configuration de votre site
:
httpd.conf
Header set Set-Cookie HttpOnly;Secure
Header always append X-XSS-Protection 1;mode=block
Header always append X-Frame-Options DENY
Header always append X-Content-Type-Options nosniff