Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Passwort Char umgangen (https://www.delphipraxis.net/204702-passwort-char-umgangen.html)

Andreas13 20. Jun 2020 12:59

AW: Passwort Char umgangen
 
Wie wäre es mit der Vorgehensweise ganz nach dem Prinzip: Ein Paßwort kann über das Handle des Edits und EM_SETPASSWORDCHAR nicht abgefangen werden, wenn man es gar nicht eingibt. Also das Paßwort auf einem USB-Dongle ablegen und zum Identifizieren des Users den Dongle kurz in den USB-Slot stecken lassen.
Meine Idee ist bestimmt einfältig und umständlich...
Andreas

Uwe Raabe 20. Jun 2020 13:52

AW: Passwort Char umgangen
 
Zitat:

Zitat von haentschman (Beitrag 1467839)
Kann man das verhindern?

Warum willst du das denn überhaupt verhindern?

Ich würde sogar noch weiter gehen und dem Benutzer direkt in deinem Programm eine Möglichkeit geben, das Passwort sichtbar zu machen - und wenn auch nur temporär für die jeweilige Eingabe. Wie oft habe ich mich schon über ein falsches Passwort gewundert, nur weil Caps-Lock eingeschaltet war oder das Tastaturlayout auf einer falschen Sprache stand. Das wäre alles sofort ersichtlich, wenn man das eingegebene Passwort sehen könnte. Wer das Passwort nicht sichtbar haben will, der lässt es eben bei den Sternchen.

haentschman 20. Jun 2020 14:23

AW: Passwort Char umgangen
 
Zitat:

Warum willst du das denn überhaupt verhindern?
Das war nur zur Info. :P Ich hoffte, daß das einfach zu verhindern ist. Wenn ich mal so kritische Bereiche habe, weiß ich was zu tun ist. :zwinker: Ich muß nur mal über alle drübergucken, was wo drin steht und auslesbar ist, aber nicht soll.

jziersch 20. Jun 2020 14:44

AW: Passwort Char umgangen
 
Hier der code einer einfachen aber sicheren Passwort Eingabekomponente.
Da es nicht von TEdit abstammt kann man es auch nichts auslesen.

Code:
type
  TWPGeheim = class(TCustomControl)
  private
    FText : String;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); override;
  public
    procedure Paint; override;
    procedure KeyPress(var Key: Char); override;
    property Text : String read FText write FText;
  end;

{ TWPGeheim }

procedure TWPGeheim.KeyPress(var Key: Char);
begin
  if Key=#8 then FText := Copy(FText,1,Length(FText)-1)
  else if Key>#32 then FText := FText + Key;
  invalidate;
end;

procedure TWPGeheim.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  inherited;
  SetFocus;
end;

procedure TWPGeheim.Paint;
var s : string;
    i : Integer;
begin
  inherited;
  if Focused then
       Canvas.Font.Color := clHighlight
  else Canvas.Font.Color := clWindowText;
  SetLength(s, Length(FText));
  for I := 1 to Length(s) do s[i] := '*';
  Canvas.TextOut( 1,1,s);
end;

procedure TWPGeheim.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or WS_BORDER or WS_TABSTOP;
end;
Kann man natürlich erweitern, z.b. um CTRL+V für Einfügen zu unterstützen:

Code:
procedure TWPGeheim.KeyPress(var Key: Char);
begin
  if Key=#8 then FText := Copy(FText,1,Length(FText)-1)
  else if Key>#32 then FText := FText + Key
  else if Key=Char(22) then // ^V
  begin
    Clipboard.Open;
    try
     SetLength(FText,30);
     SetLength(FText,Clipboard.GetTextBuf(PChar(FText),30));
    finally
     Clipboard.Close;
    end;
  end;
  invalidate;
end;

TurboMagic 20. Jun 2020 20:52

AW: Passwort Char umgangen
 
Warum nicht einfach per Timer alle paar MS selber die EM_SETPASSWORDCHAR Nachricht an das betreffende Edit schicken?
Dann kann das Tool daas ruhig mal ausschalten, gleich danach ist's halt wieder an ;-)

jziersch 22. Jun 2020 19:07

AW: Passwort Char umgangen
 
Zitat:

Zitat von TurboMagic (Beitrag 1467890)
Warum nicht einfach per Timer alle paar MS selber die EM_SETPASSWORDCHAR Nachricht an das betreffende Edit schicken?
Dann kann das Tool das ruhig mal ausschalten, gleich danach ist's halt wieder an ;-)

Das sollte nicht viel helfen wenn das Tool mit GETTEXT den text selber ausliest. Diese passwort eingabe Felder rufen eigentlich nur nach Missbrauch, auch für tools die einfach alle möglichen Zeichen ausprobieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz