天道酬勤,学无止境

在 Android 中,JavaScript 接口注入漏洞(In Android, JavaScript Interface Injection Vulnerability)

问题

我的应用程序从 Google PlayStore 收到了 [Remediation for JavaScript Interface Injection Vulnerability]。

通过非 https 网页中的 javascript 界面进行 Webview 控制。

这是我的解决方案。

这个问题正确吗? 或者如何修改?

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

    if(request.getUrl().getHost().equals("mydomain.com")) {
        view.addJavascriptInterface(new MyJavaScriptInterface(), "myview");
    } else {
        view.removeJavascriptInterface("myview");
    }
    return super.shouldOverrideUrlLoading(view, request);
}
回答1

我使用https url解决了。 我在我的网站上安装了一个 ssl 证书。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Attacks on WebView in the Android System阅读笔记
    Attacks on WebView in the Android System阅读笔记 0. 概述 Attacks on WebView in the Android System是一篇以介绍为主的论文,介绍了安卓webview组件的使用情况,以及webview的使用带来的潜在安全问题。作为较早期的论文之一,这篇文章没有使用具体的漏洞攻击的例子,而是主要介绍了两种攻击可能发生的形式——通过网页(沙盒的漏洞,或帧混淆的方法),以及通过恶意的app,并分析了其可行性。作者指出如果不加监控,可以预见通过这种漏洞进行的攻击的实例很快就会出现(事实如此)。 通过对这篇文章和相关资料的学习,我主要的收获是 进一步了解了webview在安卓应用中的使用方法;了解iframe、droid gap等一些新的概念,以及它们的使用造成的一些安全隐患;尝试了简单的漏洞攻击的例子,了解攻击进行的过程。 1. Java 与 JavaScript 在webview的交互 Webview的生命周期之前已经了解记录过就不再重复写了,本次阅读的第一小节就先从webview中Java和Javascript的交互开始写起。 为什么要交互? Java是安卓开发的主要语言,不用java就无法使用四大组件,无法通过其回调机制开发丰富的功能;Javascript使得Web界面不只是尖括号排版渲染出的“画面”
  • Android WebView 使用漏洞
    目录 一、类型二、具体分析2.1、WebView任意代码执行漏洞2.1.1、addJavascriptInterface 接口引起远程代码执行漏洞漏洞产生原因解决方案关于该方法的其他细节 总结2.1.2、searchBoxJavaBridge_接口引起远程代码执行漏洞漏洞产生原因解决方案 2.1.3、accessibility和 accessibilityTraversal接口引起远程代码执行漏洞 2.2、密码明文存储漏洞2.2.1 问题分析2.2.2、解决方案 2.3、域控制不严格漏洞2.3.1、问题分析1、setAllowFileAccess()2、setAllowFileAccessFromFileURLs()3、setAllowUniversalAccessFromFileURLs()4、setJavaScriptEnabled() 最终解决方案 一、类型 WebView中,主要漏洞有三类: 任意代码执行漏洞; 密码明文存储漏洞; 域控制不严格漏洞; 二、具体分析 2.1、WebView任意代码执行漏洞 出现该漏洞的原因有三个: WebView 中 addJavascriptInterface() 接口 WebView 内置导出的 searchBoxJavaBridge_ 对象 WebView 内置导出的 accessibility 和
  • 移动混合开发中的 JSBridge
    【导读】关于 JSBridge,绝大多数同学最早遇到的是微信的 WeiXinJSBridge(现在被封装成 JSSDK),各种 Web 页面可以通过 Bridge 调用微信提供的一些原生功能,为用户提供相关的功能。其实,JSBridge 很早就出现在软件开发中,在一些桌面软件中很早就运用了这样的形式,多用在通知、产品详情、广告等模块中,然后这些模块中,使用的是 Web UI,而相关按钮点击后,调用的是 Native 功能。现在移动端盛行,不管是 Hybrid 应用,还是 React-Native 都离不开 JSBridge,当然也包括在国内举足轻重的微信小程序。那么,JSBridge 到底是什么?它的出现是为了什么?它究竟是怎么实现的?在这篇文章中,会在移动混合开发的范畴内,将给大家带来 JSBridge 的深入剖析。1 前言有些童鞋听到 JSBridge 这个名词,就是觉得非常高上大,有了它 Web 和 Native 可以进行交互,就像『进化药水』,让 Web 摇身一变,成为移动战场的『上将一名』。其实并非如此,JSBridge 其实真是一个很简单的东西,更多的是一种形式、一种思想。2 JSBridge 的起源为什么是 JSBridge ?而不是 PythonBridge 或是 RubyBridge ?当然不是因为 JavaScript 语言高人一等
  • 了解Android webview javascript接口(Understanding Android webview javascript interface)
    问题 我创建了一个 android WebView ,并使用addJavascriptInterface(mObject, "jsinterface")注入了javascript接口。 它工作正常,直到我使用new运算符在 JavaScript 中创建一个具有相同名称(jsinterface)的对象。 我的Java代码: WebView mWebView = findViewById(R.id.myWebView); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebChromeClient(new MyWebChromeClient((Activity)mContext)); mWebView.addJavascriptInterface(new testClass(), "jsinterface"); mWebView.loadUrl("UrlToLoad"); 测试类.java public class testClass{ public testClass() { } @JavascriptInterface public String testNativeMethod() { return "Java method called!!"; } } 我的 Java 脚本代码 测试.js
  • 使用 Webview/javascript 的 Android 应用程序。 什么是安全问题?(Android App using Webview/javascript. what can be security concern?)
    问题 我正在使用Webview和Javascript创建一个 android 网络应用程序,使addJavascriptInterface(true) 。 我的应用程序将包含将从外部站点加载的数据(html)。 当我启用 addJavascriptInterface(true) 时,我担心我的应用程序的跨站点脚本 XSS/安全性。 我应该注意哪些事项以免任何恶意代码在我的应用程序上运行? 回答1 我在 Syracuse 大学找到了一项名为 Attacks on WebView in the Android System 的很好的研究,它说明了如何使用带有addJavascriptInterface(true)的WebView可以启用两种攻击。 一,恶意网站现在可以通过您分配给界面的电话服务(例如联系人,相机等)访问您的应用程序或两个,恶意应用程序可以访问易受攻击的网站,方法是将代码插入到它的Javascript。 基本上,应用程序开发人员的修复是确保在WebView ,不允许在您的 WebView 中查看除预期之外的其他 URL。 例如,假设您将 Facebook.com 嵌入到您的WebView ,您可以编写代码以确保如果点击 Facebook 中的任何其他广告,外部浏览器将打开而不是显示在您的WebView 。 这在 iFrame 中最为常见……尽管本文对此进行了更深入的讨论。
  • 是否可以在使用 webView 时将 HTML 表单中的数据获取到 android 中?(Is it possible to get data from HTML forms into android while using webView?)
    问题 我正在用 HTML 制作一个非常简单的表单,它在 android 中使用 webview 进行查看,该表单使用文本框输入您的名字,当您单击按钮时,它会将其显示为一个段落,并且它是使用 html 和 javascript 制作的。 这是我的 html 代码: <!DOCTYPE html> <html> <body> <p> Write your name and win your favorite game console name and win it! The winners will be announced in 4 days.</p> Type your name here: <input id="thebox" type="text" name="value" value=""><br> <button onclick="myFunction()">Try it</button> <p id="demo"></p> <script> function myFunction() { var x = document.getElementById("thebox").value; document.getElementById("demo").innerHTML = x; } </script> </body> </html> 新编辑的表格 <form name=
  • 了解Android的webview addjavascriptinterface(Understanding Android's webview addjavascriptinterface)
    问题 我知道要从 Javascript 交互到 Java,您必须在 webview 中使用 addjavascriptInterface 方法注入一个 Java 对象。 这是我面临的问题。 我使用addJavascriptInterface方法注册了一个 java 对象,以便在我的 JS 中可用。 我使用webview.loadURL("javascript:XXX");在 webview 中注入了一些 JS webview.loadURL("javascript:XXX"); 完成注入 JS 后,我发送一个 JS 事件。 问题是,如果在步骤 1 之后立即执行以下 Javascript: mWebView.loadUrl("javascript:if(window.myobject) console.log('myobject found---------'); else {console.log('myobject not found----');}"); 我在控制台的日志中收到“未找到我的对象”。 我想知道是否还有一段时间才能访问我的对象,如果是这样,我如何知道我应该等待多长时间来调用我的对象? 回答1 我想知道是否还有一段时间才能访问我的对象 是的,我认为有延迟,因为WebView.addJavascriptInterface将在 WebView 的内部工作线程中运行。
  • 在 javascript 中公开 facebook 用户访问令牌有哪些安全风险?(What are the security risks in exposing facebook user access token in javascript?)
    问题 假设我的应用程序对某个 facebook 用户有一个访问令牌。 将 JS 代码中的这个访问令牌暴露给访问我网站的其他用户是否存在安全风险? 如果是这样,他们可以用它做什么? 回答1 你有以下风险 困惑的代理 - 您的代码正在向可能有意或通过代表更多恶意代码行事的代码授予特权。 通过代码注入 (XSS) 窃取 - 凭据可能会被通过 XSS 漏洞注入您的页面的代码窃取,然后用于代表用户采取行动,可能会生成将您列为罪魁祸首的日志。 通过窃听窃取——如果有非 HTTPS 内容通过浏览器和您的服务器之间的连接,那么具有读取数据包能力的窃听者可能会窃取凭据。 恶意软件盗窃——如果用户的计算机上运行着恶意软件,那么将这些凭据发送到浏览器会将它们暴露给该恶意软件。 恶意软件可能必须读取浏览器进程拥有的内存或浏览器写入的缓存文件。 回答2 Facebook 访问令牌向有权访问该令牌的任何人授予您的应用对特定用户具有的相同权限。 因此,如果您的应用程序获得了执行操作 A、B 和 C 的权限并为此颁发了一个令牌,则任何其他能够获得该令牌的应用程序都将对该用户拥有相同的权限(直到令牌过期)。 所以,是的,有风险。 您需要保护令牌免于访问任何人/任何不应该像您的应用程序那样对 Facebook 用户拥有相同权限的人。 回答3 任何人都可以在任何地方使用该访问令牌来执行访问令牌有权执行的任何操作。
  • 「信息安全」一系列精选的***测试资源,工具和其他的东西
    一组很棒的***测试资源。***测试是对计算机系统及其物理基础设施发起授权的、模拟的***,以暴露潜在的安全弱点和漏洞的实践。此项目由Netsparker Web应用程序安全扫描器支持内容匿名工具反病毒逃避工具书防御性编程书籍***手册系列丛书锁拿书恶意软件分析的书网络分析的书***测试书籍逆向工程的书社会工程的书Windows的书CTF的工具协作工具会议和事件Docker 容器故意脆弱系统的Docker容器***测试分布和工具的Docker容器文件格式分析工具GNU / Linux实用程序散列破解工具十六进制编辑器工业控制和SCADA系统多范型的框架网络工具DDoS的工具漏出工具网络侦察工具协议分析器和嗅探器网络流量重放和编辑工具代理和中间机器(machine -in- middle, MITM)工具传输层安全工具无线网络工具网络漏洞扫描器Web漏洞扫描器OSINT工具在线资源在线代码示例和示例网上开发资源在线开锁资源在线开放资源情报(OSINT)资源联机操作系统资源网上***测试资源在线社会工程资源其他列表在线***测试报告模板操作系统分布期刊物理访问工具逆向工程工具安全教育的课程边信道工具社会工程工具静态分析程序漏洞数据库Web开发Android工具Windows实用程序macOS工具匿名工具I2P -隐形互联网项目。Nipe -将所有通信重定向到Tor网络的脚本
  • Penetration_Testing_POC-About 渗透测试有关的POC、EXP、脚本、提权、小工具等
    Penetration_Testing_POC 搜集有关渗透测试中用到的POC、脚本、工具、文章等姿势分享,作为笔记吧,欢迎补充。 Penetration_Testing_POC请善用搜索[Ctrl+F]查找IOT Device&Mobile PhoneWeb APP提权辅助相关PCtools-小工具集合文章/书籍/教程相关说明 请善用搜索[Ctrl+F]查找 IOT Device&Mobile Phone 天翼创维awifi路由器存在多处未授权访问漏洞华为WS331a产品管理页面存在CSRF漏洞CVE-2019-16313 蜂网互联企业级路由器v4.31密码泄露漏洞D-Link路由器RCE漏洞CVE-2019-13051-Pi-Hole路由端去广告软件的命令注入&权限提升D-Link DIR-859 - RCE UnAutenticated (CVE-2019–17621)Huawei HG255 Directory Traversal[目录穿越]|本地备份文件D-Link Devices - Unauthenticated Remote Command Execution in ssdpcgi (Metasploit)CVE-2019-20215(Metasploit)从 Interfaces.d 到 RCE:Mozilla WebThings IoT
  • 加载HTML之前,Android WebView注入Javascript(Android WebView Inject Javascript before html loaded)
    问题 我正在使用Android WebView加载某些网页。 我需要在所有页面加载之前插入一段Javascript代码。 我试图将它们注入WebViewClient onPageStart回调中。 mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { loadUrl("javascript:var output='test string';"); } }) mWebView.loadUrl("xxx.html"); HTML代码: <html> <script>document.write(output);</script> </html> 我希望在HTML之前加载My Js代码。 但是有时JS代码会在HTML之后加载。 有什么办法可以解决我的问题? 回答1 我遇到了同样的问题,并且解决了。 我在加载前隐藏WebView ,并在加载页面后显示。 webView.getSettings().setJavaScriptEnabled(true); b.webView
  • 常见的Web漏洞及防范
    一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。 通常情况下,SQL注入的位置包括: (1)表单提交,主要是POST请求,也包括GET请求; (2)URL参数提交,主要为GET请求参数; (3)Cookie参数提交; (4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等; (5)一些边缘的输入点,比如.mp3文件的一些文件信息等。 常见的防范方法 (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。 (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。 (5
  • 十大常见web漏洞
    一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。 通常情况下,SQL注入的位置包括: (1)表单提交,主要是POST请求,也包括GET请求; (2)URL参数提交,主要为GET请求参数; (3)Cookie参数提交; (4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等; (5)一些边缘的输入点,比如.mp3文件的一些文件信息等。 常见的防范方法 (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。 (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。 (5
  • 从 Android Activity 中的软件键盘监听 Webview 按键事件(Listen Webview Key Events from software keyboard in Android Activity)
    问题 是否可以在主机 Android 应用程序中处理来自 webview 的软件键盘事件? 例如,我的应用程序的 Activity 是否可以侦听显示 Google 网站的 web 视图的搜索字段中键入的内容? 考虑到下面描述的方法,如果我覆盖它返回 true,这将是可能的,但不幸的是我无法做到。 有任何想法吗? public boolean shouldOverrideKeyEvent (WebView view, KeyEvent event) Added in API level 1 Give the host application a chance to handle the key event synchronously. e.g. menu shortcut key events need to be filtered this way. If return true, WebView will not handle the key event. If return false, WebView will always handle the key event, so none of the super in the view chain will see the key event. The default behavior returns false
  • 网络安全初探-XSS攻击方式&&防御手段
    文章目录 一、什么是 XSS二、XSS注入的方法三、XSS 攻击的分类1.反射型XSS2.存储型XSS3.DOM型XSS 四、XSS 攻击的预防1.预防 DOM 型 XSS 攻击2.输入过滤3.拼接HTML时对其进行转义4.Content Security Policy5.其他安全措施 一、什么是 XSS Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。 为了和 CSS 区分,这里把攻击的第一个字母改成了 X,于是叫做 XSS。 XSS 的本质是:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。 二、XSS注入的方法 在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。在标签的 href、src 等属性中,包含 javascript: 等可执行代码。在 onload、onerror、onclick 等事件中,注入不受控制代码。在 style
  • 【安全资讯】高通芯片中的漏洞允许攻击者窥探手机通话和短信
    **作者|Alpha_h4ck **来源|FreeBuf.COM发布时间|2021-05-18 Checkpoint的研究人员在本周对一个影响全球40%智能手机的手机芯片漏洞进行了新的研究,该漏洞允许攻击者向目标用户的手机注入恶意软件,并对手机内的文本和语音对话进行窃听。 早在2020年8月,高通公司就发布了针对移动设备的骁龙芯片和半导体产品套件中约400种不同的易受攻击代码的研究报告。在与该公司的合作中,Checkpoint推迟发布了其中的一些技术细节,直到移动供应商发布漏洞补丁为止。 近期,安全研究专家Slava Makkaveev又从芯片中发现了一个漏洞,该漏洞允许某些应用程序利用移动调制解调器(MSM)进行攻击,而MSM是许多Android手机中嵌入的芯片上的一系列系统,用于支持4G LTE、高清录音和其他功能。 Android操作系统与芯片处理器通信的方式之一,就是通过高通公司开发的定制专有接口工具。在对这个接口进行分析时,研究人员发现了一个漏洞,并且能够利用该漏洞将恶意代码注入调制解调器,接管调制解调器,甚至还可以攻击应用程序处理器。除此之外,该漏洞还允许恶意攻击者访问目标设备的通话记录、查看短信和监听电话等。 目前,世界上大约有30%的手机存在这个接口,但是却并没有多少人植到这个接口可以被网络犯罪分子当作攻击向量来使用
  • 如何防止XSS攻击?
      随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常遭遇网络劫持、非法调用 Hybrid API 等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入 CSP、Same-Site Cookies 等新技术来增强安全性,但是仍存在很多潜在的威胁,这需要前端技术人员不断进行“查漏补缺”。   近几年,由于业务高速发展,前端随之面临很多安全挑战,因此积累了大量的实践经验。现在梳理常见的前端XSS安全问题以及对应的解决方案。 本文我们会讲解 XSS ,主要包括: XSS 攻击的介绍XSS 攻击的分类XSS 攻击的预防和检测XSS 攻击的总结XSS 攻击案例 XSS 攻击的介绍   在开始本文之前,我们先提出一个问题,请判断以下两个说法是否正确:   1、XSS 防范是后端 RD(研发人员)的责任,后端 RD 应该在所有用户提交数据的接口,对敏感字符进行转义,才能进行下一步操作。   2、所有要插入到页面上的数据,都要通过一个敏感字符过滤函数的转义,过滤掉通用的敏感字符后,就可以插入到页面中。   如果你还不能确定答案,那么可以带着这些问题向下看,我们将逐步拆解问题。 XSS 漏洞的发生和修复   XSS 攻击是页面被注入了恶意的代码
  • 拦截WebView中的POST请求(Intercept POST requests in a WebView)
    问题 我正在开发一个过滤请求(带有白名单)并使用自定义SSLSocketFactory的Android应用程序。 为此,我开发了一个自定义WebViewClient并且重写了shouldInterceptRequest方法。 我可以过滤SocketFactory并将其与GET请求一起使用,但无法拦截POST请求。 因此,有没有办法在WebView拦截POST请求? 这是shouldInterceptRequest方法的代码: public final WebResourceResponse shouldInterceptRequest(WebView view, String urlStr) { URI uri = URI.create(urlStr); String scheme = uri.getScheme(); // If scheme not http(s), let the default webview manage it if(!"http".equals(scheme) && !"https".equals(scheme)) { return null; } URL url = uri.toURL(); if(doCancelRequest(url)) { // Empty response Log.d(TAG, "URL filtered: " + url)
  • java 防止js注入----ESAPI结合Top10安全开发实战
    ESAPI(Enterprise Security API)是一个免费开源的Web应用程序API,目的帮助开发者开发出更加安全的代码,并且它本身就很方便调用。 根据下面的图,我将会介绍OWASP上10种类型的漏洞所对应的API使用方法,大概有十多个接口。 相关API介绍可以查看官方文档:https://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 对应使用到的API方法(使用思维导图分类): 0x01. 安装ESAPI(Java语言) 安装ESAPI的过程 1.下载esapi (jar) 2.https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API#tab=Downloads 3.将jar包和源码Download下来 4.下载Log4j (log4j-1.2.17.zip)(一定要导入这个jar包,没有会报错的!) http://logging.apache.org/log4j/1.2/download.html 5.我使用的编辑器是IDEA: 5-1.)通过项目 Project Structure 导入esapi、log4j; 5-2.)创建Resources目录; 在Resources目录里面导入ESAPI.properties 、
  • Javascript 接口不适用于 android 4.2(Javascript interface not working with android 4.2)
    问题 我正面临 android OS Jelly Bean 4.2 的一个严重错误,在我的程序中,我使用 JavaScript 来获取网页的高度,它从 android 2.2 到 4.1 完美运行,但是当我尝试在 android 4.2 中使用相同的代码时JavaScript 接口不起作用。 我该如何解决这个问题? 回答1 来自 Android 4.2 文档: 注意:如果您已将 targetSdkVersion 设置为 17 或更高,则必须将 @JavascriptInterface 注释添加到您希望在网页代码中可用的任何方法(该方法也必须是公共的)。 如果您不提供注释,则在 Android 4.2 或更高版本上运行时,您的网页将无法访问该方法。 来源:Android WebView 文档 回答2 而且,如果您使用 Proguard,请记住添加此 -keepclassmembers class * { @android.webkit.JavascriptInterface <methods>; } -keepattributes JavascriptInterface -keep public class com.mypackage.MyClass$MyJavaScriptInterface -keep public class * implements com.mypackage