설명
WebView에서 JavaScript를 활성화하면 로드된 페이지가 스크립트를 실행할 수 있습니다. 신뢰할 수 없는 URL, 사용자 입력으로 구성된 HTML, 노출된 JavaScript 인터페이스와 함께 사용하면 XSS, 세션 탈취, 앱 내부 API 오용 위험이 커집니다.
잠재적 영향
- WebView 내 XSS 실행
- 쿠키, 토큰, 로컬 스토리지 값 노출
addJavascriptInterface와 결합된 앱 기능 오용
해결 방법
- JavaScript가 필요하지 않은 WebView에서는 비활성화합니다.
- JavaScript가 필요하면 신뢰된 도메인만 로드하고 네비게이션을 제한합니다.
- 사용자 입력을 HTML로 삽입하지 말고 적절히 이스케이프합니다.
예시
변경 전
java
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(userControlledUrl);
변경 후
java
webView.getSettings().setJavaScriptEnabled(false);
webView.loadUrl("https://example.com/help");
설명:
- 변경 전: Android WebView에서 JavaScript를 활성화하면 WebView가 로드하는 페이지가 WebView의 페이지 컨텍스트에서 스크립트를 실행할 수 있습니다.
- 변경 후: JavaScript가 꼭 필요하지 않으면 setJavaScriptEnabled(false)를 사용합니다.