【问题标题】:Encrypt the WebView Cache on Android加密 Android 上的 WebView 缓存
【发布时间】:2012-10-02 19:06:22
【问题描述】:

我正在寻找一种能够加密写入 WebView 缓存的所有数据的方法。由于它已被弃用,我试图避免使用 CacheManager。我当前的策略是在写入数据之前捕获所有写入缓存和加密数据的尝试,并捕获缓存中的所有数据请求,以便我可以在返回请求的数据之前解密数据。

【问题讨论】:

    标签: android caching webview


    【解决方案1】:

    我想可以加密您的所有数据。但在使用后清除数据可能是更好的做法和安全性。您不应该使用 CacheManager 是正确的,因为它已被弃用。

    Android 安全设计建议清除缓存:

    如果您的应用程序使用 WebView 访问敏感数据,您可能希望使用 clearCache() 方法删除本地存储的所有文件。服务器端标头(如 no-cache)也可用于指示应用程序不应缓存特定内容。

    从这里: http://developer.android.com/guide/practices/security.html

    但是,如果您想加密数据,则必须手动进行。因此,您需要转到 Android 存储其缓存的目录并自行加密。根据您要完成的工作,有不同的方法可以做到这一点。如何以及何时这样做将取决于您。

    如果您正在尝试制作 Web 浏览器应用程序,那我就想不通了。最好的方法是为 CookieStore 或 CookieManager 类创建一个包装类,可以在这里找到:

    http://developer.android.com/reference/java/net/package-summary.html

    希望对你有帮助

    【讨论】:

    • 感谢您的回复。问题是我们绝对希望能够从缓存的使用中受益,但我们希望通过加密任何缓存的数据来保护它,这样如果设备被盗,就无法检索 WebView 的缓存数据。我真正想做的是覆盖 WebView 对缓存的写入和读取,因为我需要做的就是加密/解密数据。缓存的其余部分可以按原样工作。
    【解决方案2】:

    目前我正在研究一种能够加密 WebView 缓存的解决方案。根据您的想法,我正在集思广益一些可能的解决方案...

    我目前面临的一些可能(或不可能)的解决方案:

    1. GoT hook read and write of libchromeXX.so

    专业版

    • 确定性加密和解密缓存。磁盘上不会有任何未加密的数据。

    缺点

    • 非常危险(可能的架构/设备特定问题,可能的 android 版本特定问题,可能的 webview 实施具体问题)

    2。使用 inotify 监听 fs 更改并加密 jit(及时)。在下次应用启动时解密

    专业版

    • 仅限“公共”API

    缺点

    • 部分安卓设备可能不支持“inotify”
    • 在运行时可以对数据进行操作(确保只有 root / system uid 并且如果攻击者获得此权限,他可能会将东西挂在 我们的流程)

    3.对所有数据或最后修改/大小组合创建哈希并单独存储

    专业版

    • 仅限“公共”API
    • 可能比加密更快

    缺点

    • 仅验证数据是否被操纵
    • 摘要必须存储在某个地方?

    4.不知何故使用 ETag 机制来验证数据

    我现在研究得并不深入,但 ETag 可能代表特定资源的哈希值,我们可能会验证哈希值是否与服务器提供的摘要匹配。我们将不得不遍历缓存并搜索 ETag 和资源对,或者是否有开箱即用的浏览器功能?我猜不是:(

    专业版

    • 如果浏览器支持,验证可能是开箱即用的

    缺点

    • ETag 可能无法正常工作或不符合预期用途

    是否有任何机制可以验证缓存资源的完整性?

    【讨论】:

      猜你喜欢
      • 2011-12-29
      • 1970-01-01
      • 2017-05-07
      • 2012-02-26
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多