|
Tipp 0184
|
Sichere unsichtbare Texteingabe
|
|
|
Autor/Einsender: Datum: |
|
Dieter Otter 31.12.2001 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Wenn Sie jemand fragen würde, "wie kann man ein Eingabefeld erstellen, in welchem man den eingegebenen Text nicht am Bildschirm sehen kann?", würden Sie ihm antworten: "einfach die
PasswordChar-Eigenschaft verwenden, so dass z.B. lauter kleine Sternchen angezeigt werden".
|
Mit dieser Aussage haben Sie völlig Recht. Egal, was der Anwender in das Eingabefeld eingibt - es werden immer nur die kleinen Sternchen angezeigt (oder das Zeichen, welches für PasswordChar festgelegt wurde).
|
Nun soll es aber Programme geben, die es sich zur Aufgabe gemacht haben, genau solche "geschützten" Eingabefelder auszuspionieren, da ja hier meist vertrauliche Daten in Form von Passwörtern eingegeben werden.
Diese Programme gibt es auch tatsächlich. Im Bereich Visual Basic Programmierung gibt es ein solches auch als Quellcode
(PassSniff oder wie es auch immer heißt).
|
Wie kann man sich und damit seine Anwender nun gegen solche "Spionage"-Programme schützen?
|
Alles, was wir dazu brauchen, ist die Tag-Eigenschaft der TextBox. In dieser Eigenschaft speichern wir uns die Eingabe des Users im Klartext, also die Zeichen, die auch eingegeben wurden. Im Eingabefeld selbst zeigen wir anstelle der Zeichen aber immer nur Leerzeichen (oder Sternchen) an. Somit brauchen wir noch nicht einmal die
PasswordChar-Eigenschaft.
|
|
|
Option Explicit
Private Sub Form_Load()
Combo1.AddItem "* (Sternchen)"
Combo1.AddItem "# (Raute)"
Combo1.AddItem " (Leerzeichen)"
Combo1.ListIndex = 0
End Sub
Private Sub Combo1_Click()
Combo1.Tag = Left$(Combo1.Text, 1)
Text1.Text = String$(Len(Text1.Text), Combo1.Tag)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim sText As String
Dim lPos As Long
Dim lLen As Long
sText = Text1.Tag
lPos = Text1.SelStart
lLen = Text1.SelLength
Select Case KeyAscii
Case 8
If lLen > 0 Then
sText = Left$(sText, lPos) + _
Mid$(sText, lPos + lLen + 1)
Else
If lPos > 0 Then
sText = Left$(sText, lPos - 1) + _
Mid$(sText, lPos + 1)
End If
End If
Case Is > 31
sText = Left$(sText, lPos) + Chr$(KeyAscii) + _
Mid$(sText, lPos + lLen + 1)
KeyAscii = Asc(Combo1.Tag)
End Select
Text1.Tag = sText
Label4.Caption = Text1.Tag
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim sText As String
Dim lPos As Long
Dim lLen As Long
sText = Text1.Tag
lPos = Text1.SelStart
lLen = Text1.SelLength
Select Case KeyCode
Case vbKeyDelete
If lLen > 0 Then
sText = Left$(sText, lPos) + _
Mid$(sText, lPos + lLen + 1)
Else
If lPos > 0 Then
sText = Left$(sText, lPos) + _
Mid$(sText, lPos + 2)
End If
End If
Case 86
If Shift = 2 Then
Clipboard.Clear
End If
End Select
Text1.Tag = sText
Label4.Caption = Text1.Tag
End Sub
|
|
|
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (10
kB)
|
Downloads bisher: [ 980 ]
|
|
|