Android Webview JavaScript Enabled
ID |
kotlin.android_webview_javascript_enabled |
Severity |
critical |
Resource |
Access Control |
Language |
Kotlin |
Tags |
CWE:79, NIST.SP.800-53, PCI-DSS:6.5.7, android |
Description
Enabling JavaScript in a WebView can introduce security vulnerabilities such as cross-site scripting (XSS), compromising user data and application integrity.
Rationale
Allowing JavaScript execution in Android’s WebView component poses several security risks. While necessary for certain web applications, it can introduce vulnerabilities like XSS, allowing attackers to inject malicious scripts. This can result in unauthorized data access or modification.
Developers should only enable JavaScript when absolutely necessary, and ensure proper input validation and content security measures are in place.
import android.os.Bundle
import android.webkit.WebView
import androidx.appcompat.app.AppCompatActivity
class WebViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val webView = WebView(this)
// Insecure JavaScript setting
webView.settings.javaScriptEnabled = true
webView.loadUrl("https://example.com")
setContentView(webView)
}
}
Remediation
To mitigate security risks, disable JavaScript unless it’s necessary for your application. If JavaScript is required, ensure that it is only enabled for trusted content and employ additional security measures like input validation and Content Security Policy (CSP).
import android.os.Bundle
import android.webkit.WebView
import androidx.appcompat.app.AppCompatActivity
class WebViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val webView = WebView(this)
// Secure JavaScript setting
webView.settings.javaScriptEnabled = false
webView.loadUrl("https://example.com")
setContentView(webView)
}
}
References
-
CWE-79 : Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting').
-
EnablingJavaScript : Use JavaScript in WebView.