确保 Android WebView 安全的最佳实践检查列表

2023-11-21

我正在开发一个主要用 Native 编写并支持 Ice Cream Sandwich 的应用程序。但是,我需要添加一些 WebView。关于 WebView 安全性有很多讨论,当我使用 setJavaScriptEnabled(true) 时,它给了我一个警告:“使用 setJavaScriptEnabled 可能会将 XSS 漏洞引入您的应用程序,请仔细查看。”

只是要非常小心地使用 WebView 和 setJavaScriptEnable(true)。我已关注Android WebView 安全提示 and 建议。但没有最佳实践检查清单。

到目前为止我所做的:

  1. 仅将受信任的内容加载到 WebView。来自本地 html 或来自我们的后端。
  2. 通过实现拦截来自WebView的所有请求

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // magic
            return true;
        }
    });
    
  3. 确保所有后端请求都使用 https 并且仅发送到我们的后端。
  4. 检测 SSL 警告。
  5. 校验和检查本地 html/JavaScript 文件。
  6. 缩小 JavaScript 文件
  7. 更新安全提供程序以防止 SSL 漏洞

还有一些其他不专门针对WebView的保护,例如加密消息和越狱检查等。

我还缺少什么吗?我的应用程序的安全性如何?

Thanks


As per doc,

要为应用程序中的所有 WebView 启用安全浏览,请添加 清单标签:

<manifest>
     <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
                android:value="true" />
      . . .
     <application> . . . </application> </manifest> 

由于 WebView 是作为单独的 APK 分发的,因此安全浏览 WebView 现已适用于运行 Android 5.0 及更高版本的设备。 只需在清单中添加一行,您就可以更新您的应用程序并 立即提高大多数用户的安全性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确保 Android WebView 安全的最佳实践检查列表 的相关文章

  • 清除堆内存以防止内存不足异常

    我知道已经有人问过有关内存不足的问题 但我没有找到解决方案 在位图工厂中 我出现内存不足异常 甚至使用 inSampleSize 1 所以我经常用 try catch 内存不足异常来包围它 因为这是一个不好的做法 try catch Out
  • Android Volley:意外响应代码 405

    我的 Android Volley JsonObjectRequest 遇到 onErrorResponse 并出现以下问题 BasicNetwork performRequest Unexpected response code 405
  • 使用 ViewPager 从 Activity 到 Fragment 的通信

    我有一个 Activity 和两个 Fragmentstablayout含有一个viewpager 现在我可以通过实现谷歌的指南回调接口从片段到活动进行通信 但我怎样才能以另一种方式沟通从活动到片段 如果活动中发生了一些事情 外部事件 我想
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • 尝试在谷歌地图V2 Android应用程序中获取空数组的长度

    我目前正在使用谷歌地图API开发一个Android应用程序 有时我会因为没有明显的原因而发生奇怪的崩溃 在我看来 这是崩溃日志 12 02 16 38 57 071 20796 21137 com appsolute ParkYoo E A
  • Android 偏好设置中的“是”或“否”确认[重复]

    这个问题在这里已经有答案了 我需要在 设置 中实现 重置 选项 单击该设置后 将打开一个简单的对话框 要求确认 我看过了DialogPreference但我似乎无法在任何地方找到好的解决方案或教程 有人可以帮我吗 我是初学者 想法甚至代码都
  • openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

    作为一名 Android 开发新手 我遇到了一些奇怪的问题 我想创建一个类 它方法其他类 活动 任何可以用于以某种特殊方式处理文件的类 假设为了简单起见 我们将记录一些内容 如果我在活动中执行以下操作 例如在 OnClick 侦听器中 则一
  • MyGestureDetector 扩展了 SimpleOnGestureListener

    我正在实现一个扩展 SimpleOnGestureListener 的 MyGestureDetector 我从以下机构借了课程 http www codeshogun com blog tag view flipper http www
  • 定时器时间不作为变量改变?

    这是我的代码 private int V Time 1 try final Timer V Timer final Handler V Handler V Timer new Timer V Handler new Handler Loop
  • 在 Unity 中构建 apk 应用程序时包含文件

    在unity中构建apk文件时如何将文件和文件夹添加到apk文件中 我需要的是在Android上安装应用程序后 在应用程序的父目录 android data com company product files 中存在一些文件和文件夹 这是我
  • 如何在我的谷歌上嵌入转弯导航

    我想在我的 Android 应用程序中嵌入逐段导航 请给我一个教程或如何执行此操作的想法 提前致谢 如果您不固定使用谷歌地图 您可以使用基于 OpenStreetMap 地图的维基百科版本 的 SDK 有几个不错的 SDK 提供商 skob
  • 无法读取第 0 行,第 -1 列

    我正在尝试复制使用 SQLite 管理器创建的数据库 我在其中执行了以下操作 CREATE TABLE android metadata locale TEXT DEFAULT en US and INSERT INTO android m
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • 调用外部应用程序

    如何从我的应用程序调用外部应用程序 例如 我需要打电话Shazam 应用程序 来自我的应用程序 我可以在应用程序的包名称中看到logcat 这对任何目的都有用吗 特别是对于 Shazam 以下代码有效 Intent intent new I
  • FragmentMap + ActionBar 选项卡

    我一直在尝试插入一个MapView进入一个ActionBar Tab 但我什至无法解决问题 即使谷歌搜索 这是主要活动 Override public void onCreate Bundle savedInstanceState supe
  • 无法 ACTION_VIEW 外部存储上的文件

    我的 Android 手机的外部存储中有一个文件 在本例中是模拟的 知道通往它的路径和 或拥有File代表它的对象 我如何使用Intent在适当的应用程序中打开它 我尝试的第一件事是 startActivity new Intent Int

随机推荐

  • 如何将 Nuget 包 dll 添加到 Wix 安装程序

    如何将 Nuget 包 dll 添加到 Wix 安装程序 我尝试添加
  • Android:从电话号码中检索联系人姓名

    我想检索与来电号码关联的联系人姓名 当我处理广播接收器中的传入号码时 具有带有来电呼叫者姓名的字符串将极大地帮助我的项目 我认为这涉及使用 sql WHERE 子句作为过滤器的查询 但我需要对联系人进行排序吗 一个例子或提示会有很大的帮助
  • 如何在android中的其他视图上添加覆盖视图?

    我想将按钮放在图像视图上方 我怎样才能做到这一点 请不要提供设置背景 因为我需要 ImageView 设置为背景 开玩笑 你需要的是把你的观点放在一个RelativeLayout 类似的东西会起作用
  • Python Excel 模板读取和重写,维护公式和格式

    我已经查遍了所有内容 但似乎找不到我要找的东西 我在这里找到的所有线索对我来说最终都陷入了死胡同 xlrd xlwt 和 xlutils 几乎可以满足我的需要 但是 基本思想是我需要使用 Python 将简单数据 字符串 写入 Excel
  • 如何在 QML 中集成 QWidget(Qt Quick 2.0)

    我已经关闭了返回 QFrame 的库 我的程序的GUI是用QML Qt Quick 2 0 开发的 我需要将 QFrame QWidget 集成到 QML 的解决方案 笔记 我找到了示例 Qt DIR Examples Qt 5 3 dec
  • Java StringTokenizer,空空标记

    我正在尝试将一个字符串拆分为 29 个标记 stringtokenizer 不会返回空标记 我尝试过 string split 但我相信我做错了什么 String strings line split 29 示例输入 10150 15 58
  • 如何将 MSpec 与 MS Build 集成?

    前几天我看了一个BDD 截屏视频 by 罗布 康纳利 在视频中他展示了如何使用MSpec 所以我下载了它并玩了一下 我现在想要的是整合MSpec使用 MS Build 但我不知道如何 我使用 TFS team build 作为我的 CI 服
  • 正则表达式撇号如何匹配?

    我想添加到此规则匹配撇号 rule re compile r lt gt 我努力了 rule re compile r lt gt 但它认为撇号是行错误 为什么 错误的出现是因为你不能直接使用单个 inside 以及同样单身的 不能在里面使
  • 具有需要存在另一个参数的可选参数

    很简单 我如何初始化params我的 Powershell 脚本的一部分 这样我就可以有一个命令行参数 例如 Get Foo foo1
  • Oracle:创建具有自动增量 id 列的视图

    我创建了一个view填充来自不同表的数据 我用了10 select statements并使用组合这些选择语句的结果UNION ALL 我想添加primary key column以我看来 因为我必须创造XML使用此中的数据的文件view
  • 如何在 C# 中对位图图像应用模糊效果? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何在不使用库的情况下在 C 中对图像应用模糊效果 更新的代码 现在更快 需要使用 UNSAFE 关键字 static void Main string args Bitmap
  • 使用单独数据帧中的值重命名列

    我有一个 tibble 其中的列名包含空格和特殊字符 这使得使用起来很麻烦 我想在处理数据时将这些列名称更改为更易于使用的名称 然后在最后将它们更改回原始名称以进行显示 理想情况下 我希望能够将其作为管道的一部分来完成 但是我还没有弄清楚如
  • 如何选择具有当天时间戳的行?

    我试图从数据库表中仅选择今天的记录 目前我使用 SELECT FROM table WHERE timestamp gt DATE SUB now INTERVAL 1 DAY 但这需要过去 24 小时的结果 我需要它只选择今天的结果 忽略
  • ViewPager 嵌套在 ViewPager 中

    我真的是 Android 新手 我将不胜感激对我的课程工作的任何帮助 我需要去做 1 一个Activity中两个ViewPager 不嵌套 2 两个ViewPager 一个ViewPager嵌套在另一个ViewPager中 我发现了类似的问
  • ASP.NET MVC 验证消息未本地化

    我正在使用 ASP NET MVC 4 和不显眼的客户端验证 我的应用程序中的语言是德语 在 web config 文件中定义 如果我有一个必填字段 在我的 Code First 类中配置了数据注释 则客户端验证工作正常 唯一的缺点 消息未
  • 无法将重复值插入到唯一索引中[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 自答问题以供将来参考 如果您有一个已删除并重新添加内容的表 则在插入 ID 等于现有 I
  • 本机模式下 SQL Reporting Services 2008 启动缓慢

    在当天的第一个报告请求时 或者在未知的时间段内没有报告请求时 我们会遇到启动速度缓慢的情况 在 SQL Reporting Server 2005 安装中 我们将设置应用程序池以避免回收 Reporting Services 应用程序 但是
  • 根据缩放级别分组/取消分组 MKAnnotation(并保持快速)

    我有一个地图视图 其中有很多注释 其中大多数彼此非常接近 我想要做的类似于 iOS 上的照片应用程序 当注释彼此太接近时 它们会被分组 每当您缩小时 如果它们相距太远 它们就会取消分组 我见过这个问题已经 但给出的答案并不是我真正想要的 我
  • 在本地主机上使用“meteor mongo”但使用远程数据库

    我正在学习望远镜教程 我创建了一个 client collections myfile js 我在本地主机上 但我正在使用 MongoHQ 上托管的远程数据库启动 Meteor 而不是使用 Meteor 的本地数据库 在本教程中 我被告知通
  • 确保 Android WebView 安全的最佳实践检查列表

    我正在开发一个主要用 Native 编写并支持 Ice Cream Sandwich 的应用程序 但是 我需要添加一些 WebView 关于 WebView 安全性有很多讨论 当我使用 setJavaScriptEnabled true 时