본문 바로가기

나의 플랫폼/안드로이드

[Android ] WebView addJavascriptInterface 사용시 유의점.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개발 중인 앱이 API 17 미만 버전을 지원한 상태에서 addJavascriptInterface를 사용할 경우, 아래와 같은 설명이 나옵니다.



 WebView.addJavascriptInterface should not be called with minSdkVersion < 17 for security reasons: JavaScript can use reflection to manipulate application less... (Ctrl+F1)


For applications built for API levels below 17, WebView#addJavascriptInterface presents a security hazard as JavaScript on the target web page has the ability to use reflection to access the injected object's public fields and thus manipulate the host application in unintended ways.



간단하게 말하자면, API 17미만 버전에서는 보안 이슈때문에 addJavascriptInterface를 사용하지 않는 것이 좋다.

라는 의미 입니다.


무슨 보안 이슈가 있나!


Figure 3: JavascriptInterface reflection attack

webview 3

출처 : https://www.cigital.com/blog/android-webviews-and-the-javascript-to-java-bridge/



FUtil 이라는 javascriptinteface를 만들어져 있다는 전제조건에서,

위와 같이 Runtime 클래스를 호출 해서 명령을 넣을 수가 있다는 의미 입니다.


즉, api 17 버전 미만 에서는 javascript로 스마트폰을 마음껏 해킹 할 수 있는 활로를 만들어 준다는 의미 입니다.


저 함수 하나 썼다고, 유저의 폰을 마음껏 뒤지고 수정 해버리는 결과가 발생할 수 있다는 것이죠.


참고하세요.