Android WebView 안전하게 설정하는 방법 (JS 허용, 외부 URL 분기, 파일 접근 차단)
하이브리드 앱을 개발하거나 운영하다 보면 앱 내부에 웹 화면을 넣기 위해 WebView를 정말 자주 쓰게 됩니다. 저의 경우도 공지사항, 이벤트 페이지, 또는 결제 화면 등을 WebView로 처리하곤 하는데요. 웹 페이지가 정상적으로 동작해야 하니까 처음 개발할 때 별생각 없이 JavaScript를 켜고 관련 설정을 느슨하게 다 열어두는 경우가 많습니다. 하지만 이렇게 설정을 열어두면 XSS 같은 웹 보안 취약점이 그대로 앱의 취약점으로 이어집니다. 특히 내부 도메인과 외부 링크 구분이 안 되거나, file:// 접근이 허용된 상태에서 JavaScript가 켜지면 로컬에 있는 민감한 데이터가 유출될 위험도 있습니다. 매번 프로젝트 세팅할 때마다 설정 값이 헷갈려서, 실제 운영 환경에 맞춰 안전하게 쓸 수 있는 가이드와 공통 코드를 정리해 둡니다. 1. 안전한 WebView 공통 설정 코드 매번 화면마다 설정을 따로 복사해서 넣으면 누락되는 부분이 생기기 쉽습니다. 아래처럼 공통으로 검증하고 세팅할 수 있는 Configurator 클래스를 만들어 두고 호출하는 방식이 안전합니다. Kotlin class SecureWebViewConfigurator ( private val allowedHosts: Set<String>, ) { fun configure (webView: WebView ) { webView.settings.apply { // 웹 서비스 동작을 위해 필요한 경우만 켭니다. javaScriptEnabled = true domStorageEnabled = true // 로컬 파일 접근은 기본적으로 모두 차단합니다. allowFileAccess = false allowContentAccess = false allowFileAccessFromFil...