Blog

H2 Console 화면이 X-Frame-Options에 막혔을 때

내장 H2 데이터베이스의 콘솔에 접속하려는데 화면이 정상적으로 표시되지 않았습니다.

H2 Console에 접속했지만 내용이 표시되지 않는 화면

개발자 도구에서 확인하니 X-Frame-Options 때문에 프레임이 차단되고 있었습니다.

개발자 도구에 표시된 X-Frame-Options 프레임 차단 메시지

당시 적용한 설정

아래는 개발 중 적용했던 코드입니다. 이 보안 필터 체인의 프레임 보호를 끄므로 운영 환경에 그대로 적용하면 안 됩니다.

Spring Boot의 H2 Console 보안 안내는 콘솔이 개발용이며 프레임을 사용한다고 설명합니다. 프레임 보호 전체를 끄기보다는 같은 출처의 프레임만 허용하는 설정을 검토해야 합니다. 적용 범위도 개발 환경의 콘솔로 한정하는 편이 맞습니다. 인증과 CSRF 처리는 별도 문제라서 이 코드 하나가 완전한 콘솔 보안 설정이 되지는 않습니다.

사용하던 Spring Security에서 람다식으로 frameOptions를 비활성화했습니다. 아래는 필요한 부분만 발췌한 것이고 나머지 설정은 ...로 생략했습니다.

당시에는 버전이 바뀌어 람다식으로 선언해야 한다고 설명했습니다. 하지만 프레임 차단을 푼 건 람다식 문법으로 바꾼 것이 아니었습니다. 아래 코드에서 실제로 동작을 바꾸는 부분은 disable입니다.

Java
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {  
return http  
	...
	
	 .headers(headers -> headers.frameOptions(FrameOptionsConfig::disable))
	 
	...
.build();  
}