2016-06-20 6 views
0

SQLiteのWebページis recommending "優れたアプリケーションファイル形式"としてSQLite。無効なデータベースファイルに対するSQLiteの堅牢性?悪意のあるユーザーがリモートコードの実行を引き起こす破損したデータベースファイルを作成する可能性がありますか、それともデータベースが積極的にテストされ、保護されているのでしょうか?データ交換フォーマットとしてSQLiteデータベースを使用することはどのくらい安全ですか?

この形式で悪意のあるファイルを作成する方が、xmlやjsonというファイルよりも簡単になると心配です。これは、Sqliteをデータ交換形式として使用する場合に重要と思われます。

+0

どのユーザーも、どのような形式のデータベースにもアクセスする必要はありません。フォーマットだけではデータを保護できません。エクスチェンジは、常にユーザーとデータの両方を検証する仲介業者を経由する必要があります。 – duffymo

+0

@duffymo私はSQLiteをデータ交換形式として使用しています。ユーザーに物理ファイルへのアクセスを与えずにこの方法で使用することはできません。 – ghord

+0

私はこの方法では使用しないことをお勧めします。あなたが主張するなら、幸運。 – duffymo

答えて

3

documentationは言う:

をSQLiteのは、不正な形式のデータベースファイルを扱うことが可能であることを確認し、多数のテストケースがあります。これらのテストではまず整形式のデータベースファイルを作成し、SQLite以外の方法でファイル内の1つ以上のバイトを変更して破損を追加します。その後、SQLiteを使用してデータベースを読み取ります。場合によっては、バイトの変更はデータの途中にあります。これにより、データベースの整形式を維持したまま、データベースの内容が変更されます。それ以外の場合は、ファイルの未使用バイトが変更され、データベースの整合性には影響しません。興味深いケースは、データベース構造を定義するファイルのバイトが変更されるときです。不正なデータベーステストは、SQLiteがファイル形式のエラーを検出したことを確認し、バッファオーバーフロー、NULLポインタの逆参照、または他の不吉な動作の実行なしにSQLITE_CORRUPTリターンコードを使用してエラーを報告します。

間違ったデータをファイルに入れたり、データベースから予期せぬデータを読み取ったときにプログラムが予期しない動作をするのを防ぐことはできません。

関連する問題