1

私のアプリケーションは現在、firebirdセキュリティを使用して、アプリケーションのすべてのユーザーにログオンしています。

Delphi7とFirebird2.1を使用しています。

これを変更する必要があり、アクセスを自分で制御する必要があります。

データベースからすべてのユーザーのパスワードを(変換ルーチンとして)取得し、テーブル内にパスワードを保存することを検討しています。

これを行うことは可能ですか?

delphiコンポーネントTIBSecurityServiceを使用しようとしていますが、成功しません。

見てください:

var
  i: integer;
  l: TStrings;
  pwd: string;
begin
  IBSecurityService1.Attach;
  IBSecurityService1.DisplayUsers;
  l := TStringList.Create;
  try
    for i := 0 to IBSecurityService1.UserInfoCount-1 do
      l.add(IBSecurityService1.UserInfo[i].UserName);

    while l.Count > 0 do
      try
        IBSecurityService1.DisplayUser(l[0]);
        pwd := IBSecurityService1.Password;
        // pwd = ''
      finally
        l.Delete(0);
      end;
  finally
    l.Free;
  end;
end;

手伝ってくれてありがとう!

4

3 に答える 3

4

Firebirdのパスワードはハッシュ化されているため、回復することはできません。

于 2012-10-18T12:22:49.697 に答える
4

私の知る限り、TIBSecurityServiceはInterbase 6用です(Embarcaderoのwikiのエントリを参照してください)。元のFirebirdはそのバージョンのフォークであったため、そのコンポーネントがFirebird2.1で引き続き機能するかどうかはわかりません。

とはいえ、元のパスワードを取得することはできません。Firebirdのパスワードは、 Firebird FAQに記載されているように、一方向の暗号化アルゴリズムを使用して暗号化されます。したがって、それが意図したものである場合、それは機能しません。

あなたがしようとすることができるのは、ユーザー情報を保持しているsecurity2.FDBデータベースをアップグレードすることです。これを行うには、古いFirebirdサーバーにそのデータベースのバックアップを作成し、新しいFirebirdサーバーに復元します。従う手順については、このリンクを確認してください。

HTH

于 2012-10-18T12:25:09.100 に答える
2

適切なアプリケーションでは、パスワードは暗号化またはプレーンテキストで保存されません。

これらは、パスワードのハッシュを計算することによって保存されます。いくつかの弱いハッシュアルゴリズムがあるので、ヘイスは元に戻せないはずです。大規模なハッキングなしで回復が可能かどうかは疑問です。

于 2012-10-18T12:20:55.113 に答える