【发布时间】:2012-10-02 19:06:22
【问题描述】:
我正在寻找一种能够加密写入 WebView 缓存的所有数据的方法。由于它已被弃用,我试图避免使用 CacheManager。我当前的策略是在写入数据之前捕获所有写入缓存和加密数据的尝试,并捕获缓存中的所有数据请求,以便我可以在返回请求的数据之前解密数据。
【问题讨论】:
我正在寻找一种能够加密写入 WebView 缓存的所有数据的方法。由于它已被弃用,我试图避免使用 CacheManager。我当前的策略是在写入数据之前捕获所有写入缓存和加密数据的尝试,并捕获缓存中的所有数据请求,以便我可以在返回请求的数据之前解密数据。
【问题讨论】:
我想可以加密您的所有数据。但在使用后清除数据可能是更好的做法和安全性。您不应该使用 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 缓存的解决方案。根据您的想法,我正在集思广益一些可能的解决方案...
我目前面临的一些可能(或不可能)的解决方案:
1. GoT hook read and write of libchromeXX.so
专业版
缺点
2。使用 inotify 监听 fs 更改并加密 jit(及时)。在下次应用启动时解密
专业版
缺点
3.对所有数据或最后修改/大小组合创建哈希并单独存储
专业版
缺点
4.不知何故使用 ETag 机制来验证数据
我现在研究得并不深入,但 ETag 可能代表特定资源的哈希值,我们可能会验证哈希值是否与服务器提供的摘要匹配。我们将不得不遍历缓存并搜索 ETag 和资源对,或者是否有开箱即用的浏览器功能?我猜不是:(
专业版
缺点
是否有任何机制可以验证缓存资源的完整性?
【讨论】: