java - Come disabilitare l'intestazione della risposta "X-Frame-Options" in Spring Security?




spring-security spring-boot (4)

Molto probabilmente non vuoi disattivare completamente questa intestazione, ma usa SAMEORIGIN . Se si utilizzano i Config Java ( Spring Boot ) e si desidera consentire le opzioni X-Frame: SAMEORIGIN , è necessario utilizzare quanto segue.

Per le versioni precedenti di Spring Security:

http
   .headers()
       .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))

Per le versioni più recenti come Spring Security 4.0.2 :

http
   .headers()
      .frameOptions()
         .sameOrigin();

Ho CKeditor sul mio jsp e ogni volta che carico qualcosa, viene visualizzato il seguente errore:

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

Ho provato a rimuovere Spring Security e tutto funziona come un fascino. Come posso disabilitarlo nel file XML di sicurezza primaverile? Cosa devo scrivere tra i tag <http>


Per impostazione predefinita, X-Frame-Options è negato, per prevenire attacchi clickjacking . Per ignorare ciò, è possibile aggiungere quanto segue nella configurazione di sicurezza di Spring

<http>    
    <headers>
        <frame-options policy="SAMEORIGIN"/>
    </headers>
</http>

Ecco le opzioni disponibili per la politica

  • DENY - è un valore predefinito. Con questo la pagina non può essere visualizzata in un frame, indipendentemente dal sito che tenta di farlo.
  • SAMEORIGIN - Suppongo che questo sia quello che stai cercando, in modo che la pagina sia (e possa essere) visualizzata in un frame sulla stessa origine della pagina stessa
  • ALLOW-FROM : consente di specificare un'origine, in cui la pagina può essere visualizzata in una cornice.

Per maggiori informazioni dai un'occhiata here .

E here per verificare come è possibile configurare le intestazioni utilizzando le configurazioni XML o Java.

Si noti che potrebbe essere necessario specificare anche la strategy appropriata, in base alle esigenze.


Se si utilizza la configurazione Java di Spring Security, tutte le intestazioni di sicurezza predefinite vengono aggiunte per impostazione predefinita. Possono essere disabilitati utilizzando la configurazione Java di seguito:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
   WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      .headers().disable()
      ...;
  }
}

Se si utilizza la configurazione XML è possibile utilizzare

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




x-frame-options