Delphi でネットワーク プログラムを作成する場合のセキュリティ対策
Delphi の MIDAS コントロールは、ネットワーク プログラムを作成するための非常に便利な手段を提供します。これらのコントロールを使用すると、ローカル エリア ネットワーク上でクライアント/サーバー システムのプログラムを作成したり、インターネット上で分散処理アプリケーションを簡単に作成したりできます。
ネットワーク プログラムに関する重要な問題は、セキュリティに関する考慮事項です。一部の機密データはオンラインで送信され、不法に傍受されて不必要な損失を引き起こす可能性があります。実際のプログラミング作業において、いくつかの有効な予防策を講じましたので、ここで簡単に紹介します。
1. 原則
現在、データ暗号化には多くの方法があり、データ保護において一定の役割を果たしています。ただし、固定キーが使用されたり、キーがデータと一緒に送信されたりする場合、満足のいく機密性の結果は得られません。実際に、「リクエスト/レスポンス」モードで一連のランダム キー メソッドを考え出しました。これは、パスワードとデータの機密性を保つのに非常に満足のいくものです。
クライアント プログラムが起動し、サーバー プログラムとの接続を確立しようとすると、クライアント プログラムはサーバー プログラムによって生成されたランダムな文字列をサーバーから取得し、システムはこの文字列をキーとして使用して、ユーザーのログイン パスワードとデータを送信します。キーはサーバー プログラムによってランダムに生成されるため、顧客がログインするたびにキーは異なり、データ盗難につながるパスワードの傍受の可能性が大幅に減少します。
サーバーは、ランダムな文字列を返すカスタム インターフェイスをリモート データ モジュールに導入できます。リモート データ モジュールは、この文字列を後続の処理のキーとして記録する必要があります。ランダムな文字列を生成するには、さまざまな方法があります。最も簡単な方法は、Random() 関数を使用して乱数を生成し、Format() 関数または IntToStr() を使用してこの数値から文字列を生成することです。
2. ユーザーログイン対策
プログラムが不正にデバッグされてパスワードが漏洩することを防ぐには、顧客のログイン情報をサーバー側で処理するか、顧客のログインを担当するセキュリティ層を追加する必要があります。顧客のログイン情報は、ユーザー名、パスワード、権限、その他の情報を含めて顧客情報テーブルに保存されます。
クライアント プログラムがログインすると、まずサーバー プログラムのインターフェイスを呼び出してキー文字列を取得し、このキーを使用してユーザーが入力したユーザー名とパスワードを暗号化し、ログイン情報をサーバーに送信します。暗号化アルゴリズムには、DES アルゴリズムまたは他の効果的なアルゴリズムを使用できます。サーバーはログイン情報を受信すると、まず以前に生成され記録されたランダムキーを使用してログイン情報を復号化し、次に復号化された情報を保存されている顧客情報テーブルの情報と比較して、顧客情報が合法であるかどうか、および顧客データが正しいかどうかを判断します。享受した権限など
このプロセスのクライアント プログラムは次のとおりです。
strKey:=myRemoteSever.GetKey();
{サーバーのインターフェースを呼び出してランダムなキーを取得する}
ユーザー名:=Ency(strユーザー名
strKey);
{ユーザー名を暗号化します。Ency() は暗号化アルゴリズムです}
PassWord:=Ency(strPassword
strKey);
{ログインパスワードを暗号化する}
if myRemoteServer.LogIn(ユーザー名
パスワード)、次に {ログイン}
始める
{プロセス}
終わり;
サーバー側のログイン プロセス LogIn() は次のとおりです。
strUserName:=DeEncy(ユーザー名
strKey);
{ユーザー名を復号化します。DeEncy() は復号化アルゴリズムです}
strPassword:=DeEncy(パスワード
strKey);
{ログインパスワードを復号化する}
{データベースのクエリ}
if (パス) then
結果:=true
それ以外
結果:=false;
StrKey はサーバー プログラムとクライアント プログラムの両方でグローバル変数として定義する必要があることに注意してください。
顧客情報テーブルがプログラムの外部に開かれてパスワードが漏洩することを防ぐために、顧客情報に特定の暗号化手段を実装することができます。たとえば、PARADOX テーブルにパスワードを追加し、サーバー プログラムが最初に提供することができます。顧客情報テーブルにアクセスする際のパスワード。
3. データ送信
ネットワーク アプリケーションでは、一部の機密データはインターネット経由で送信するときに暗号化する必要があります。 Delphi の MIDAS メカニズムは、データをクライアントに送信する前に一部のフィールドを暗号化する方法を提供します。また、クライアントの更新データ要求を受信した後、データベースに送信する前に、クライアントからのデータの対応するフィールドを復号化することもできます。更新を行います。これらの目標を達成するには、TProvider または TdataSetProvider オブジェクトをサーバー プログラムのリモート データ モジュールに追加し、このオブジェクトの DataSet プロパティを処理するデータ セットに設定します。次のコードを Tprovider の OnGetData イベントに追加します。
DataSet を使用して行う
始める
EOF ではない間は実行します
始める
編集;
SensitiveData.AsString :=
Ency(SensitiveData.AsString
strKey);
{機密データを暗号化する}
役職;
次;
終わり;
終わり;
上記のコードは、機密データをクライアント プログラムに送信する前に暗号化できます。
同様に、Tprovider の OnUpdateData イベントに処理コードを追加すると、クライアントから送信されたデータを復号化できます。
上記は、ネットワーク プログラムのセキュリティ対策を実装するための一般原則を紹介しただけです。これに基づいて、より優れた機密保持効果を達成するために他の機密保持対策を追加できます。たとえば、クライアント プログラムは特定の補助ハードウェア デバイスを使用してセキュリティを強化できます。 IC カード アプリケーションでは、クライアント プログラムはログイン時にユーザー名とパスワードの入力を要求するだけでなく、IC カードの種類と具体的な内容も IC リーダーで確認します。パスワードが漏洩しても、誰もなりすましてログインすることはありません。もちろん、絶対に安全なセキュリティ対策はありません。真に機密を保持するには、厳格な機密保持体制とユーザー側の高い機密保持意識が必要です。