2009-07-16 9 views
0

Ich habe eine Delphi (5) Anwendung, die einen Login-Bildschirm (Standard-Benutzername/Passwort) verwendet und gerade herausgefunden haben, dass Passwortspeicher-Anwendungen die Login-Felder auf dem Bildschirm identifizieren können, auch wenn sie verschleiert sind und bieten an, die Informationen für den Benutzer zu speichern. Aufgrund der hohen Sicherheit unseres Programms wollen wir das nicht zulassen. Bis jetzt konnte ich keine Informationen darüber finden, wie man diese Anwendungen daran hindern kann, die Felder zu erkennen oder ihnen zu sagen, sie sollten es nicht versuchen. Ist eine dieser Optionen möglich? Wenn nicht, gibt es eine andere Option?Blockformfüller blockieren?

Antwort

4

Hier sind ein paar Gedanken - wissen Sie, wie der Formfüller funktioniert?

1) Können Sie das Feld Benutzername/Passwort zur Laufzeit dynamisch erstellen? Mit einem halb-zufälligen Komponentennamen? Es ist nicht schwer, ein paar Komponenten in Ihrem Anmeldeformular zu erstellen.

2) Können Sie die Standard-Edit-Steuerelemente durch eine Keypress-Statusmaschine ersetzen, indem Sie die Eingaben beispielsweise mit TLabels "fälschen"?

3) Ausschneiden/Kopieren/Einfügen von den Bearbeitungssteuerelementen blockieren?

4) Überschreiben Sie den Standard-Nachrichtenhandler für Ihr Formular und schlucken Sie ein Tastendruckereignis, das nicht von Ihrer App kommt?

+0

Der Etikettenvorschlag hat es getan. Die Anwendung wird jetzt nicht als Anmeldebildschirm angezeigt. Da ich bereits einen Keyboard-Handler habe (möchte ich von der ctrl-Fkey-Kombination fernhalten), war es eine einfache Sache, das hinzuzufügen, um mit den getroffenen Schlüsseln umzugehen. –

+0

Cool, froh, dass es geholfen hat. :-) – robsoft

+0

Höchstwahrscheinlich fangen Formularfüller Felder mit Maskedit-Eigenschaft. Die "Fake" -Label-Methode macht also ihren Zweck. Sie können auch ein Captcha-Feld hinzufügen. Ein weiteres Feld zu füllen kann lästig sein, aber aus Sicherheitsgründen ist es eine Rose mit Dornen. (Die Passwort-Technik ist sowieso ein weiteres Feld zum Füllen :) – user114285

0

Fordern Sie, dass Ihre Benutzer Formfüller vielleicht nicht verwenden? Ich weiß nicht, welche Art von Kontrolle über die Computer Ihrer Benutzer ausgeübt werden kann.

Oder finden Sie vielleicht einen Weg zu erkennen, ob ein Plug-in (wie Roboform) im Browser installiert ist, und eine Warnmeldung aufstellen?

+0

Dies ist keine Browser-Anwendung, es ist eine eigenständige Win32-Programmdatei. Ich habe das oben wahrscheinlich nicht klar genug gemacht, tut mir leid. –

0

Ich glaube nicht, dass es eine Möglichkeit gibt, zwischen Tastaturereignissen, die im Gerätetreiber generiert werden, und Tastaturereignissen, die von einem anderen Programm generiert werden, mithilfe der Funktion keybd_event zu unterscheiden.

Wenn der Formularbefüller nur kopieren & einfügen, dann ist es einfach - nur WM_PASTE Nachricht blockieren.

5

Benutzer werden immer einen Weg finden, Kontrolle über ihre eigenen Systeme auszuüben. Sie können genauso gut verhindern, dass ein automatischer Formularausfüller funktioniert, da Sie verhindern können, dass der Benutzer eine Post-It-Notiz auf seinen Monitor klebt.

Befassen Sie sich mit der Tatsache, dass Sie, solange Sie dem Benutzer vertrauen, um die Sicherheit zu erhalten, mit den Schwächen Ihrer Benutzer umgehen müssen. Sie können dies immer abschwächen, indem Sie die Fähigkeiten einzelner Benutzer einschränken, aber auf lange Sicht können Sie nur hoffen, dass sich Ihre Benutzer ausreichend um ihre eigenen persönlichen Informationen kümmern, um sie ordnungsgemäß zu sichern.

Auf der anderen Seite, wenn diese Anwendung nur aus dem Büro verwendet wird, warum haben die Benutzer Passwort-Management-Anwendungen in einer sicheren Umgebung?

+0

"Benutzer werden immer einen Weg finden, Kontrolle über ihre eigenen Systeme auszuüben." Ja Dankeschön. Ich würde sogar noch einen Schritt weiter gehen. Der Versuch, die Kontrolle eines Computerseigentümers über sein eigenes System zu untergraben, ist moralisch nicht vom Schreiben von Malware zu unterscheiden. Selbst wenn es Ihr Programm ist, ist der Computer, der es ausführt, ihr Eigentum, nicht Ihr Eigentum. –

+0

Von dem, was ich verstehe, sind Password Management-Apps mit einigen wenigen biometrischen Geräten enthalten. Unser Grund für die Blockierung ist, dass unsere Anwendung und die Benutzer, die sie verwenden, mit hochsensiblen und vertraulichen Daten umgehen müssen. Wir bilden unsere Benutzer aus, aber mit der Blockierung der Passwort-Apps verlagert sich die Last der Schuld für Sicherheitsverletzungen weiter auf den Benutzer, nicht auf uns. –

+1

Es gibt keine Last zu verschieben. Die Benutzer und ihre Arbeitgeber sind für die Software auf den Computern verantwortlich; du bist nicht. Wenn sie * installieren und Passwortverwalter verwenden, und eine solche Verwendung dazu führt, dass ein Passwort verloren geht, dann ist das Ihre Schuld und nichts, womit Sie sich beschäftigen müssen. –

1

Sie könnten den von Webanwendungen verwendeten Ansatz verwenden, um sicherzustellen, dass Automatisierungsdienstprogramme nicht einfach zum Ausfüllen von Formularen geschrieben werden können. Dazu muss ein Bild mit Text angezeigt werden, den der Benutzer eingeben muss, bevor er fortfahren kann. Das Automatisierungsprogramm, das "Text" auf dem Bildschirm lesen kann, kann die "Grafik" auf dem Bildschirm nicht so leicht lesen (zumindest nicht ohne eine umfangreiche OCR-Programmierung). Die meisten dieser Programme verzerren auch den Text, so dass ein einfacher OCR-Durchlauf fehlschlagen würde.

Dies ist ziemlich einfach zu tun, erstellen Sie einfach ein paar Dutzend Bilder von Wörtern, die Sie abfragen möchten, wählen Sie zufällig eine Zahl beim ersten Start der App (vergessen Sie nicht, den Zufallsgenerator) und Wählen Sie dann ein Bild aus, das der Benutzer eingeben soll.Wenn Sie eine Übereinstimmung mit dem Bild durchführen, führen Sie keinen Vergleich mit einem Literal durch, sondern vergleichen Sie es mit etwas wie der CRC des Wortes im Bild oder etwas Ähnliches.

Um die Kennwörter Ihrer Benutzer besser zu schützen, können Sie sie auch häufiger ändern. Wenn Sicherheit eine starke Anforderung ist, benötigen Sie starke Kennwörter, die gemäß einem voreingestellten Standard geändert werden müssen. Zum Beispiel erfordern Sie eine Groß-/Kleinschreibung, mindestens einen numerischen Wert, mindestens ein Symbol und mindestens 8 Zeichen. Passwörter können nicht im Standardwörterbuch enthalten sein (fehlgeschlagene Rechtschreibprüfung) oder wurden in den letzten n Mal verwendet. Passwörter laufen nach 20 Tagen ab.

Ich würde auch sicherstellen, dass Sie nicht wirklich das Passwort in der Datenbank speichern. Speichern Sie stattdessen einen Hash-Wert des Passworts. Der einzige, der das aktuelle Passwort für einen Benutzer kennen sollte, ist derjenige, der es eingegeben hat.

+0

Was Sie beschreiben, heißt * Captcha *. –

+0

Passwörter sind tatsächlich doppelt verschlüsselt und dann hashed. Ja, wir sind paranoid. Captcha ist hier nicht wirklich brauchbar, aber wir haben einen anderen Ort, an dem es nützlich sein könnte, also werde ich es im Hinterkopf behalten. –