5

UIWebView を使用して、アプリケーション バンドルの一部である HTML5 コードをレンダリングする iOS アプリケーションで問題に直面しています。

この HTML5 コードは、機密データが含まれている可能性があるバックエンドに対して ajax リクエストを行います。これはすべて HTTPS 経由で行われ、アプリケーションが機密データを保存することはありません。ただし、アプリケーションのセキュリティ テストを行ったところ、iOS 5 の時点で、HTTP ポスト リクエストがローカルの SQL Lite データベース (cache.db) に格納されていることがわかりました。

NSURLCache グローバル オブジェクトのディスク ストレージをゼロに設定し、必要に応じてファイルを削除することで、これを簡単に管理できました。

しかし、iOS 6.1 では Apple が再び実装を変更したようで、データは cache.db-wal に保存されています。SQL Liteの知識は乏しいのですが、これはSQL Liteを特定のオプションで初期化した際に作成されるファイルだと思います。

修正に関する提案はありますか?

4

3 に答える 3

1

あなたは呼び出すことができます

[[NSURLCache sharedURLCache] removeAllCachedResponses] 

これにより、キャッシュされたすべての URL 呼び出しが Cache.db ファイルからクリアされます。

于 2013-12-24T00:06:33.087 に答える
1

SQLite によって作成されるその他のファイル ( -journal-wal-shm) は、データベース自体の一部です。

ファイルを削除する場合はcache.db、すべてのファイルも削除してくださいcache.db-*


そもそもデータが挿入されないようにするには、データベースを開き、すべてのテーブルで次のようなトリガーを作成します。

CREATE TRIGGER MyTable_evil_trigger
BEFORE INSERT ON MyTable
BEGIN
    SELECT RAISE(IGNORE);
END;

(そして、挿入されたレコードが実際に表示されないときにUIWebViewが爆発するかどうかを確認します…)

于 2013-07-16T07:05:21.173 に答える