devxlogo

Implement password-protected TextBox that are really secure

Implement password-protected TextBox that are really secure

As explained in another tip in this TipBank, users can peek at the contents of password-protected TextBox controls with a simple Spy-like program, or even with a VB program plus some API functions. The problem is that such TextBox controls react to the WM_GETTEXT message and the GetWindowText API function as if they were regular TextBox controls. This holds True under Windows 95, 98 and NT. (Windows 2000 has fixed this security issue.)

If you want to make sure that no one can steal passwords from your VB programs, you only have to subclass the WM_GETTEXT message and discard the call. The following code snippet relies on the MsgHook.Dll (that you can download from the FileBank section of this site).

' ASSUMES THAT YOU HAVE ADDED A REFERENCE TO THE MSGHOOK.DLL'Dim WithEvents TextHook As MsgHookPrivate Sub Form_Load()    Set TextHook = New MsgHook    ' Text1 is the password-protected control    TextHook.StartSubclass Text1End SubPrivate Sub TextHook_BeforeMessage(uMsg As Long, wParam As Long, lParam As Long, _    retValue As Long, Cancel As Boolean)    ' filter out the WM_GETTEXT message        If uMsg = WM_GETTEXT Then Cancel = TrueEnd Sub

If you discard the WM_GETTEXT message, no application will be able to read the contents of your control.

It is remarkable that this subclassing code doesn’t prevent the current application from reading the contents of the password-protected control. The reason is – evidently – that VB doesn’t rely on API calls to read the Text property of a TextBox.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist