728x90
반응형

 

Spring Boot 2.x 로 개발을 하다보면 어마어마한 문제들이 많이 발생합니다.

 

최근 보안정책을 준수하기 때문에 일반적으로 사용이 가능한 부분들도 보안취약점으로 구분되기도 하죠.

 

이번에도 VirtualKeypad 사용하는 프로젝트에서 Spring Security 를 적용하면서 생긴 문제를 해결했습니다.

 

https://gigas-blog.tistory.com/100

 

WebPonent Virtual Key - HTML 보안 키패드

웹과 하이브리드 앱에서 사용할 수 있는 보안키패드를 소개하겠습니다. HTML 기반으로 다양한 환경에서 사용이 가능하다는 장점이 있는 VirtualKey 입니다. 주민번호를 입력하는곳과 비밀번호 등 개인정보에 민감..

gigas-blog.tistory.com

 

 

 

VirtualKeypad 는 html 기반으로 iFrame 을 띄우는 방식으로 만들어진 솔루션입니다.

 

하지만 Security 적용을 하니 아래와 같은 오류들이 뿜어져나왔습니다.

 

 

Refused to display 'http://localhost:9050/keypad/keypad-core.html' in a frame because it set 'X-Frame-Options' to 'deny'.

 

Uncaught DOMException: Blocked a frame with origin "http://localhost:9050" from accessing a cross-origin frame.

 

X-Frame-Options'를 'deny'로 설정 했기때문에 keypad-core.html 프레임 표시를 거부했다고 나오고,

 

Uncaught DOMException : 원본 "http : // localhost : 9050"이 교차 출처 프레임에 액세스하지 못하도록 프레임을 차단했다고 나옵니다.

 

 

 

 

이런저런 에러를 보다보니 정말 많은 경험이 되는것 같습니다..

 

CrossOrigin 이라는것도 찾아보고. Cors설정도 찾아봤지만 어떤 문제인지 확인조차 어려워서 이설정은 아닌것같아 첫번째 오류메시지 기준으로 찾아보기 시작했습니다.

 

'X-Frame-Options' to 'deny'. 이 부분을 처리 해줘야하는데 DOMException 이 나와서 javascript 문제인줄 알고 VirtualKeypad 설정 js 파일을 찾아보았지만 없었습니다.

 

다시 원점으로 돌아가 Spring Security 적용전에는 문제 없이 되었으니 Spring Security 설정으로 가능할거라는 생각으로 다시 검색을 했습니다.

 

찾아보니 Spring Security 는 기본적으로  X-Frame-Options Click jacking 공격 막기 설정이 되어있습니다.

 

iFrame 을 사용하기 때문에 설정이 해주어야 합니다.

 

 

 

 

 

Xml 로 설정도 가능하지만 SpringBoot 에서는 Java로 구성하기 때문에 Java 로 작성합니다.

 

Spring Security 설정을 하는 WebSecurityConfigurerAdapter.configure(HttpSecurity http) 메서드에 작성을 하겠습니다.

 

X-Frame-Options 를 비활성화 하는 설정이지만 보안적인 이슈가 발생할 수 있습니다.

 

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

 

 

 

동일 도메인에서는 iframe 접근이 가능하도록 X-Frame-Options를 sameOrigin() 으로 설정하면 됩니다.

 

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

 

 

 

Java로 간단하게 설정이 가능하지만 Spring Boot 에서는 강력한 properties 파일로 설정이 가능합니다.

 

security.headers.frame = false

 

 

 

 

이 설정 하나로 iFrame 사용하는 프로젝트에서 문제없이 진행할 수 있습니다.

 

728x90
반응형

+ Recent posts