Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 存储在cache.db-wal文件中的敏感数据?_Ios_Objective C_Sqlite_Uiwebview - Fatal编程技术网

Ios 存储在cache.db-wal文件中的敏感数据?

Ios 存储在cache.db-wal文件中的敏感数据?,ios,objective-c,sqlite,uiwebview,Ios,Objective C,Sqlite,Uiwebview,我在使用UIWebView呈现HTML5代码的iOS应用程序中遇到了一个问题,该代码是应用程序包的一部分 这段HTML5代码向我们的后端发出ajax请求,其中可能包含敏感数据。这一切都是通过HTTPS完成的,我们的应用程序从不存储敏感数据。但是,在对应用程序进行安全测试时,我们发现http post请求在iOS 5中存储在本地SQL Lite数据库(cache.db)中 通过将NSURLCHACHE全局对象设置为零磁盘存储,并在适当时删除该文件,可以很容易地进行管理 不过,现在看来,在iOS 6

我在使用UIWebView呈现HTML5代码的iOS应用程序中遇到了一个问题,该代码是应用程序包的一部分

这段HTML5代码向我们的后端发出ajax请求,其中可能包含敏感数据。这一切都是通过HTTPS完成的,我们的应用程序从不存储敏感数据。但是,在对应用程序进行安全测试时,我们发现http post请求在iOS 5中存储在本地SQL Lite数据库(cache.db)中

通过将NSURLCHACHE全局对象设置为零磁盘存储,并在适当时删除该文件,可以很容易地进行管理

不过,现在看来,在iOS 6.1中,苹果再次更改了实现,数据存储在cache.db-wal中。我对SQLLite的了解有限,但我认为这是在使用某些选项初始化SQLLite时创建的文件


有什么解决办法的建议吗

SQLite创建的其他文件(
-journal
-wal
-shm
)是数据库本身的一部分

删除
cache.db
文件时,还应删除任何
cache.db-*
文件


为了防止数据首先被插入,请打开数据库并在每个表上创建如下触发器:

创建触发器MyTable\u邪恶\u触发器
在MyTable上插入之前
开始
选择升高(忽略);
结束;

(然后检查当插入的记录没有实际显示时UIWebView是否会爆炸…

经过进一步研究,通过向HTTP响应中添加“no cache,no store”值(未记录在SQLite数据库中的HTTP请求值),上面热舔的建议似乎是正确的

例如,在ASP.Net MVC中:

public ActionResult PostSensitiveData(string data)
{
     Response.Cache.SetCacheability(HttpCacheability.NoCache);
     Response.Cache.SetNoStore();

     return Json(data);
}
你可以打电话

[[NSURLCache sharedURLCache] removeAllCachedResponses] 

这将从Cache.db文件中清除所有缓存的url调用。

有关url请求的磁盘缓存的详细信息。我们商店的实验表明,设置“缓存控制:无缓存,无存储”可以防止缓存。不过,我们还在仔细检查。请让每个人都了解这方面的最新情况。我不认为这是一个理想的答案,尽管它肯定会起作用。事情是这样的,苹果已经打破了Http 1.1协议,在不考虑缓存控制的情况下缓存数据,他们正在Http POST上缓存数据!如果我删除cach.db-*文件,它们仍然会被创建,并且至少在一段时间内,敏感数据会写入设备,并且容易受到攻击。如果你能获得对设备的物理访问,那么使用诸如iExplorer和记事本之类的工具检索这些信息是相当容易的。这是一个非常有创意的答案,尽管它看起来有点黑客化,但它可能是最好的选择。我对此做了广泛的研究,但资料很少。我怀疑有很多应用程序会受到此影响,并暴露NSURLCache数据库中的敏感信息。