我正在寻找一种能够加密写入WebView缓存的所有数据的方法。由于它已被弃用,我试图避免使用CacheManager。我目前的策略是捕获所有写入缓存并在写入之前加密数据的尝试,并从缓存中捕获所有数据请求,以便在返回请求的数据之前解密数据。
答案 0 :(得分:5)
我想可以加密所有数据。但是,在使用后清除数据可能是更好的做法和安全性。你不应该使用CacheManager是正确的,因为它已被弃用。
Android安全设计建议清除缓存:
如果您的应用程序使用WebView访问敏感数据,您可能希望使用clearCache()方法删除本地存储的任何文件。像no-cache这样的服务器端头也可用于指示应用程序不应缓存特定内容。
从这里: http://developer.android.com/guide/practices/security.html
但是如果你想加密数据,你必须手动完成。因此,您需要转到Android存储其缓存的目录并自行加密。根据您要完成的任务,有不同的方法可以执行此操作。你如何以及何时这样做取决于你。
如果您正在尝试制作网络浏览器应用程序,请脱颖而出。最好的方法是为CookieStore或CookieManager类创建一个包装类,可以在这里找到:
http://developer.android.com/reference/java/net/package-summary.html
我希望这会有所帮助
答案 1 :(得分:0)
当前,我正在研究一种能够加密WebView缓存的解决方案。根据您的想法,我正在集思广益一些可能的解决方案...
我现在遇到的一些可能(或不可能)的解决方案:
1。 GoT钩子读写libchromeXX.so
Pro
缺点
2。用inotify监听fs的变化并加密jit(及时)。在下次启动应用程序时解密
Pro
缺点
3。在所有数据上创建哈希或最后修改/大小组合,然后分别存储
Pro
缺点
4。以某种方式使用ETag机制来验证数据
我现在研究的还不是很深入,但是潜在地ETag可能代表特定资源的哈希,我们可能会验证哈希是否与服务器提供的摘要匹配。我们将不得不遍历缓存并搜索ETag和资源对,或者是否有现成的浏览器功能?我想不是:(
Pro
缺点
没有任何机制可以验证缓存资源的完整性吗?