Android WebView 인증서 오류 무시

Android WebView 인증서 오류 무시

설명

WebViewClient.onReceivedSslError에서 handler.proceed()를 호출하면 TLS 인증서 오류가 발생해도 WebView가 페이지 로드를 계속합니다. 운영 환경에서 이 동작은 중간자 공격을 가능하게 하며 사용자가 신뢰할 수 없는 콘텐츠를 정상 페이지로 오인하게 만들 수 있습니다.

잠재적 영향

  • HTTPS 통신 탈취 또는 변조
  • 로그인 정보와 세션 토큰 노출
  • 악성 스크립트 삽입

해결 방법

  1. 인증서 오류가 발생하면 handler.cancel()을 호출하고 로드를 중단하세요.
  2. 개발 서버의 테스트 인증서가 필요하면 Network Security Config의 debug-overrides로 디버그 빌드에서만 테스트 CA를 신뢰하세요. 인증서 오류 자체를 무시하지 마세요.
  3. 인증서 고정이 필요한 경우 Android Network Security Config를 검토합니다.

예시

변경 전

java
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.proceed();
}

변경 후

java
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.cancel();
}

설명:

  • 변경 전: WebViewClient.onReceivedSslError에서 handler.proceed()를 호출하면 TLS 인증서 오류를 무시하고 페이지를 계속 로드합니다.
  • 변경 후: 인증서 오류가 발생하면 handler.cancel()을 호출합니다.

참조