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




spring-security spring-boot (5)

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 disabilitare questo nel file xml di sicurezza di primavera? Cosa dovrei scrivere tra i tag <http>


Se stai utilizzando le configurazioni Java invece delle configurazioni XML, inserisci questo nel metodo "WebSecurityConfigurerAdapter.configure (HttpSecurity http)":

http.headers().frameOptions().disable();

Se stai usando Spring Boot, il modo più semplice per disattivare le intestazioni predefinite di Spring Security è utilizzare security.headers.* proprietà security.headers.* . In particolare, se si desidera disabilitare l'intestazione predefinita di X-Frame-Options , basta aggiungere quanto segue al proprio application.properties :

security.headers.frame=false

Sono inoltre disponibili proprietà security.headers.cache , security.headers.content-type , security.headers.hsts e security.headers.xss . Per ulteriori informazioni, consultare SecurityProperties .


Molto probabilmente non si desidera disattivare completamente questa intestazione, ma utilizzare SAMEORIGIN . Se si utilizza Java Configs ( Spring Boot ) e si desidera consentire X-Frame-Options: SAMEORIGIN , sarà 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();

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>

Per impostazione predefinita X-Frame-Options è impostato su negato, per prevenire attacchi clickjacking . Per sovrascriverlo, puoi aggiungere quanto segue alla tua configurazione di sicurezza di primavera

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

Qui ci sono opzioni disponibili per la politica

  • DENY - è un valore predefinito. Con questo la pagina non può essere visualizzata in un frame, indipendentemente dal sito che sta tentando di farlo.
  • SAMEORIGIN - Presumo che questo sia ciò 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.





x-frame-options