사이드 프로젝트로 출시한앱이 갑자기 로그인이 안됐다.
뭔가 이상함을 감지하여 DB를 확인해보니 XSS 공격을 당했다...
기존에 XSS 방어 옵션을 꺼놨는데 이게 화근이 됐다...
그래서 우선 spring secuirty에서 XSS 방어 옵션을 다시 재설정 해주고, http 통신 자체를 없애기로 결정했다. 생각해보니 https 였다면 암호화된 내용을 몰라 이 지경은 되지 않았을 것이란 생각이 들었다.
Spring Cloud Gateway 서버에 SSL 적용을 하기 위해, keytool을 이용해 키 파일을 생성해줬다.
keytool -genkey -alias <alias> -keystore <keystore_file> -storetype PKCS12 -keyalg RSA -keysize <key_size> -validity <validity_days> -storepass <store_password>
다음과 같이 작성하면 된다.
예를 들어
keytool -genkey -alias mj -keystore mykey.p12 -storetype PKCS12 -keyalg RSA -keysize 2048 -validity 3650 -storepass a123456789
이렇게 지정하면 mykey.p12라는게 생성된다.
우선 spring gateway server에 ssl 옵션을 활성화 시켜야 한다.
설정 파일에 다음 옵션을 추가해주자
server:
ssl:
enabled: true
key-alias: mj
key-store-password: a123456789
key-store: classpath:mykey.p12
key-store-type: PKCS12
나의 경우 src/main/resource에 키를 집어 넣어 다음과 같이 설정했다.