앱을 제출하고 나니 받은 에러,
웹뷰를 사용하고있는 내 앱은 하이재킹 인텐트 스키마에 취약하다?
한마디로 보안에 관련된 이슈로써, 웹뷰에서 사용하고 있는 것에 대해 점검해보란것이다.
https://support.google.com/faqs/answer/9101196
해결방법에 대해 간단히 정리하자면 두 가지가 있다. (옵션 1,2로 제공)
1. Intent.parseUri가 사용되는 부분을 모두 체크하여 아래와 같이 사용한다.
// convert Intent scheme URL to Intent object
Intent intent = Intent.parseUri(url);
// forbid launching activities without BROWSABLE category
intent.addCategory("android.intent.category.BROWSABLE");
// forbid explicit call
intent.setComponent(null);
// forbid Intent with selector Intent
intent.setSelector(null);
// start the activity by the Intent
view.getContext().startActivity(intent, -1);
그러니까 Browsable 카테고리 없이 액티비티를 실행하지 말란 의미이다. 즉, 스키마를 통해 외부 앱을 킬때는 Browasable로 등록된 앱들만 킬 수 있도록하여, 사용자의 보안을 향상시키란 의미이다.
2. 웹뷰 사용시, 간단히 말해서 아래의 설정을 사용하고 있으면 해제하자.
위치는 Manifest.xml의 application안에
android:usesCleartextTraffic="false"
위 속성이 만약 true로 되어있다면 false로 교체하자.
단, 교체하기전에 미리 알아보자면 저 속성의 의미는 암호화되지 않은 연결을 허용하겠다는 옵션으로, 대표적인 사용 예가 http로 된 URL을 로드하는 경우다.
안드로이드 파이(9.0)부터는 Https를 기본적으로 허용하는데, 이 부분을 예외처리하기 위해 사용하는 것이 저 옵션이다.
** 만약, 위 옵션대로 Https만을 허용하되, 특정 사이트는 Http를 허용하겠다면! 이럴때 사용하는것이 네트워크 보안 구성이다.
https://developer.android.com/training/articles/security-config.html
<application
android:usesCleartextTraffic="false"
android:networkSecurityConfig="@xml/network_security_config"
매니페스트에서 설정을 이렇게 맞추고 xml하위에 해당 xml 파일을 생성한다.
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">abc.def.com</domain>
</domain-config>
</network-security-config>
그리고 위와 같이 설정해주면 된다.
단, 이 것의 단점은 무엇인가.
위의 xml에 기록되지 않은 도메인들은 Https여야한다는 것인데, 만약 웹뷰에서 주소를 직접입력하여 Http로 된 사이트들을 오픈해야한다거나 할땐 보이지 않아 오류가 발생하므로, 그것또한 문제가 발생한다. (CLEAR TEXT NOT PERMITTED 관련 오류)
단순히 해당 사이트가 Https가 아니라서 문제가 발생합니다. 라고 해도 되겠지만, 현재는 Http사이트도 있기 때문에, 이 사이트들 모두를 막는 것은 현실적으로 맞지 않는다.
그러므로 옵션2의 방법인 false로 세팅하는 것보다는 옵션1의 방법을 따르자.
'Android 공부 > Android Webview' 카테고리의 다른 글
Android Webview에서 Javascript에러로 인해 Child 뷰가 안나올 경우 (0) | 2021.12.27 |
---|---|
Android Webview adjustResize 문제 (0) | 2021.05.18 |
펌) android webview에서 카카오링크 이슈 (0) | 2021.04.27 |
안드로이드 webview 데이터 주고받기 (0) | 2021.03.04 |