mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-24 22:45:20 +00:00
Harden GeohashPickerActivity WebView security by blocking mixed content and restricting navigation to local asset only on experimental security branch. (#698)
This commit is contained in:
@@ -10,6 +10,7 @@ import android.webkit.JavascriptInterface
|
|||||||
import android.webkit.WebChromeClient
|
import android.webkit.WebChromeClient
|
||||||
import android.webkit.WebSettings
|
import android.webkit.WebSettings
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
|
import android.webkit.WebResourceRequest
|
||||||
import android.webkit.WebViewClient
|
import android.webkit.WebViewClient
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
@@ -104,10 +105,16 @@ class GeohashPickerActivity : OrientationAwareActivity() {
|
|||||||
settings.javaScriptEnabled = true
|
settings.javaScriptEnabled = true
|
||||||
settings.domStorageEnabled = true
|
settings.domStorageEnabled = true
|
||||||
settings.cacheMode = WebSettings.LOAD_DEFAULT
|
settings.cacheMode = WebSettings.LOAD_DEFAULT
|
||||||
|
settings.mixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW
|
||||||
settings.allowFileAccess = true
|
settings.allowFileAccess = true
|
||||||
settings.allowContentAccess = true
|
settings.allowContentAccess = true
|
||||||
webChromeClient = WebChromeClient()
|
webChromeClient = WebChromeClient()
|
||||||
webViewClient = object : WebViewClient() {
|
webViewClient = object : WebViewClient() {
|
||||||
|
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
|
||||||
|
val url = request?.url?.toString() ?: return true
|
||||||
|
// Block navigation away from the local geohash picker asset
|
||||||
|
return !url.startsWith("file:///android_asset/geohash_picker.html")
|
||||||
|
}
|
||||||
override fun onPageFinished(view: WebView?, url: String?) {
|
override fun onPageFinished(view: WebView?, url: String?) {
|
||||||
super.onPageFinished(view, url)
|
super.onPageFinished(view, url)
|
||||||
// Initialize to last/initial geohash if provided, otherwise center
|
// Initialize to last/initial geohash if provided, otherwise center
|
||||||
|
|||||||
Reference in New Issue
Block a user