2009-08-14 10 views
1

私はデータベース駆動型のWindowsアプリケーションを作成しており、実行可能ファイルとデータベースの両方を顧客のマシンにインストールする必要があります。Windows用のセキュアデータベースバックエンドユーザーが簡単にハックできないアプリケーション

データベースが格納されているのと同じマシンを使用していても、ユーザーがアクセスできないアプリケーションのバックエンドとして使用できるデータベースはありますか?

私が知る限り、Postgresはこれでは動作しません。私が試したアクセスのバージョンは、パスワードを解読するのが簡単です。

私のアプリケーションはラップトップにインストールでき、インターネットにアクセスできない場合でも使用できなければならないため、通常のクライアントサーバーデータベースモデルは機能しません。

私はLinuxのいくつかのバージョンにPostgresがインストールされたVMWare仮想アプライアンスを使用することを検討しましたが、システム負荷がかなり高くなります。

私はエンコードされたテキストファイルなどを使用する必要はありません。

答えて

1

データの重要度はどれですか?標準のRSAまたはAESを使用してシステムにデータを暗号化すると、アプリケーションにキーが格納され、暗号化され、母親と父親のユーザーは遠ざかります。

しかし、クライアントアプリケーションから秘密を保持できない場合は、ここで問題が発生します。

+0

銀行情報などのような超重大なデータではありません。私はおそらく、誰かを本当に深刻に保つことができないことを知っている。 主な目的は、ユーザーがデータベースを台無しにしたり、接続するための独自のアプリケーションを構築したりしないようにすることです。 データベースの一部のフィールドをエンコードすることはできますが、ユーザーが手動で追加や削除を行わないようにするという問題は解決しません。 – user156241

+0

ああそうだけど。各列に「塩」を追加してデータを暗号化することができます。行と表の名前を暗号化することさえできるのであれば、プリコンパイル・スクリプトを使用して、名前とデザイン・セットの間のマッピングを持つことができます。 また、塩があれば、ユーザーの行の追加や変更を停止することができます。ローカル管理者として上書きできるセキュリティがあれば、明らかに削除を停止することはできません。 – Spence

2

ユーザー(またはハッカー)がマシンを所有しているため、セキュリティを確保するために何もできません。試してみると、Security Through Obsecurityというカテゴリに分類されます。

あなたの最善の策は、データベースを暗号化し、バイナリの不明瞭な場所で鍵を隠そうとすることです。これはインストールされたアプリケーションなので、データベースサーバーは使用しないでください。 PostgresのようなDBライブラリを使うだけです。

0

予算に応じて、いくつかのオプションがあります。

まず、SQL Server Compact Edition 3.5を.NETプログラムで使用して、暗号化されたローカルデータベースを実行しました。良いニュースは、ファイルが暗号化されていて、パスワードがあればしかアクセスできないということでした。もちろん悪いニュースは、パスワードを生成するためにシードされたPRNGのようなことをしない限り、パスワードがおそらく接続文字列にあることです。また、SSCEでは、アプリケーションとは独立してインストールする必要があります。何らかの理由でコントロールパネルからアンインストールすると、アプリケーションは実行されません。

第2に、VistaDBという商品も使用しており、暗号化されたローカルデータベースファイルもサポートしています。 VistaDBと他のデータベースエンジンの比較機能はありますが、別のデータベースエンジンはavailable on their websiteですが、プレインストールされているランタイムがないということもあります。別のアセンブリをディストリビューションに追加するだけです(静的にリンクできると主張しています私はそれを個人的に試していません)。また、ディスク上のローカルファイルはVistaDBで暗号化されており、パスワードがなければ基になるデータベースにアクセスすることはできません。

幸運を祈る!

関連する問題