설명
WebView에서 allowFileAccess, allowContentAccess, allowFileAccessFromFileURLs, allowUniversalAccessFromFileURLs를 불필요하게 활성화하면 WebView 콘텐츠가 로컬 파일 또는 콘텐츠 제공자 데이터에 접근할 수 있습니다. 외부 콘텐츠와 결합되면 앱 내부 데이터 노출로 이어질 수 있습니다.
잠재적 영향
- 로컬 파일 또는 content URI 데이터 노출
- WebView 기반 권한 경계 우회
- XSS와 결합된 민감 정보 유출
해결 방법
- 파일 또는 콘텐츠 접근이 필요하지 않으면 비활성화합니다.
- 외부 웹 콘텐츠와 로컬 파일 접근을 같은 WebView에서 혼합하지 않습니다.
- 필요한 URI만 명시적으로 제공하고 Content Security Policy와 입력 검증을 적용합니다.
예시
변경 전
java
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
변경 후
java
webView.getSettings().setAllowFileAccess(false);
webView.getSettings().setAllowContentAccess(false);
webView.getSettings().setAllowUniversalAccessFromFileURLs(false);
설명:
- 변경 전: WebView에서 file:// 또는 content:// 접근을 허용하면 로드된 콘텐츠가 앱 로컬 파일이나 콘텐츠 제공자 데이터에 접근할 위험이 커집니다.
- 변경 후:
setAllowFileAccess(false)와setAllowContentAccess(false)로 파일 시스템 및 콘텐츠 URI 접근을 비활성화하고 파일 URL에서의 범용 접근도 끕니다.file:///android_asset과file:///android_res의 앱 리소스는 파일 접근 설정과 별도로 접근 가능합니다.