Skip to content

Commit b587356

Browse files
committed
add: security hardening around webview javaScriptEnabled
1 parent 059cc4d commit b587356

File tree

1 file changed

+11
-2
lines changed
  • OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl

1 file changed

+11
-2
lines changed

OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/WebViewManager.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.app.Activity
55
import android.os.Build
66
import android.view.View
77
import android.webkit.JavascriptInterface
8+
import android.webkit.WebSettings
89
import android.webkit.WebView
910
import com.onesignal.common.AndroidUtils
1011
import com.onesignal.common.ViewUtils
@@ -299,7 +300,6 @@ internal class WebViewManager(
299300
}
300301
}
301302

302-
@SuppressLint("SetJavaScriptEnabled", "AddJavascriptInterface")
303303
suspend fun setupWebView(
304304
currentActivity: Activity,
305305
base64Message: String,
@@ -310,7 +310,7 @@ internal class WebViewManager(
310310
webView!!.overScrollMode = View.OVER_SCROLL_NEVER
311311
webView!!.isVerticalScrollBarEnabled = false
312312
webView!!.isHorizontalScrollBarEnabled = false
313-
webView!!.settings.javaScriptEnabled = true
313+
secureSetup(webView!!)
314314

315315
// Setup receiver for page events / data from JS
316316
webView!!.addJavascriptInterface(OSJavaScriptInterface(), JS_OBJ_NAME)
@@ -329,6 +329,15 @@ internal class WebViewManager(
329329
webView!!.loadData(base64Message, "text/html; charset=utf-8", "base64")
330330
}
331331

332+
@SuppressLint("SetJavaScriptEnabled")
333+
fun secureSetup(webView: WebView) = with(webView.settings) {
334+
javaScriptEnabled = true
335+
allowFileAccess = false
336+
allowFileAccessFromFileURLs = false
337+
allowUniversalAccessFromFileURLs = false
338+
mixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW
339+
}
340+
332341
// This sets the WebView view port sizes to the max screen sizes so the initialize
333342
// max content height can be calculated.
334343
// A render complete or resize event will fire from JS to tell Java it's height and will then display

0 commit comments

Comments
 (0)