J'ai CKeditor sur mon jsp et chaque fois que je télécharge quelque chose, l'erreur suivante apparaît:
Refused to display 'http://localhost:8080/xxx/xxx/upload-image?CKEditor=text&CKEditorFuncNum=1&langCode=ru' in a frame because it set 'X-Frame-Options' to 'DENY'.
J'ai essayé de supprimer Spring Security et tout fonctionne comme un charme. Comment puis-je désactiver cela dans le fichier XML de sécurité Spring? Que dois-je écrire entre les <http>
balises
Réponses:
Par défaut, il
X-Frame-Options
est défini sur refusé pour éviter les attaques de détournement de clic . Pour remplacer cela, vous pouvez ajouter ce qui suit dans votre configuration de sécurité de printemps<http> <headers> <frame-options policy="SAMEORIGIN"/> </headers> </http>
Voici les options disponibles pour la politique
Pour plus d'informations, jetez un œil ici .
Et ici pour vérifier comment vous pouvez configurer les en-têtes à l'aide de configurations XML ou Java.
Notez que vous devrez peut-être également spécifier les informations appropriées
strategy
, en fonction des besoins.la source
http
et lesheaders
balises?http.headers().frameOptions().sameOrigin();
Si vous utilisez des configurations Java au lieu de configurations XML, mettez ceci dans votre
WebSecurityConfigurerAdapter.configure(HttpSecurity http)
méthode:la source
http.headers().frameOptions().sameOrigin();
Il est fort probable que vous ne souhaitiez pas désactiver complètement cet en-tête, mais utilisez
SAMEORIGIN
. Si vous utilisez Java Configs (Spring Boot
) et que vous souhaitez autoriser les X-Frame-Options :,SAMEORIGIN
alors vous devez utiliser ce qui suit.Pour les anciennes versions de Spring Security:
http .headers() .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
Pour les versions plus récentes comme Spring Security 4.0.2 :
la source
Si vous utilisez la configuration XML, vous pouvez utiliser
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/security"> <security:http> <security:headers> <security:frame-options disabled="true"></security:frame-options> </security:headers> </security:http> </beans>
la source
Si vous utilisez la configuration Java de Spring Security, tous les en-têtes de sécurité par défaut sont ajoutés par défaut. Ils peuvent être désactivés à l'aide de la configuration Java ci-dessous:
@EnableWebSecurity @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .headers().disable() ...; } }
la source
Si vous utilisez Spring Boot, le moyen le plus simple de désactiver les en-têtes par défaut de Spring Security consiste à utiliser des
security.headers.*
propriétés. En particulier, si vous souhaitez désactiver l'en-X-Frame-Options
tête par défaut, ajoutez simplement ce qui suit à votreapplication.properties
:security.headers.frame=false
Il y a aussi
security.headers.cache
,security.headers.content-type
,security.headers.hsts
et lessecurity.headers.xss
propriétés que vous pouvez utiliser. Pour plus d'informations, jetez un œil àSecurityProperties
.la source