[C#][WinForm]擺脫密碼透視小工具
由於現在很簡單就可以下載到免費的密碼透視小工具
而在開發WinForm使用PasswordChar也是稀鬆平常的事
但也因為我們的疏忽導致密碼很容易讓有心人看光光
為了防止這樣的情況出現,就必須在開發時用點心思。
這裡我簡單自訂義一個myPassbox來達到保護的效果(當然建議還是使用加密較安全)
一般情況下,使用spy++,大多可以很輕鬆取得密碼
為了不讓上述情形發生,我們用點心來防止。
class myPassBox : System.Windows.Forms.TextBox
{
#region Initialize myPassBox
public myPassBox()
{
base.Multiline = false;
this.UseSystemPasswordChar = true;
}
#endregion
#region override method
//大多小工具都使用SendMessage Function來取得密碼
//所以覆寫WndProc並加入相關判斷
private const Int32 WM_SETTEXT = 0x000C;
private const Int32 WM_GETTEXT = 0x000D;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_GETTEXT || m.Msg == WM_SETTEXT)
return;
base.WndProc(ref m);
}
#endregion
}
加入myPassbox
private void Form1_Load(object sender, EventArgs e)
{
myPassBox passbox = new myPassBox();
passbox.Location = new Point(10, 10);
passbox.Text = "123456";
TextBox textbox = new TextBox();
textbox.PasswordChar = '*';
textbox.Text = "123456";
textbox.Location = new Point(passbox.Width + 20, passbox.Location.Y);
this.Controls.Add(passbox);//自訂義
this.Controls.Add(textbox);//預設
}
再度使用spy++觀察兩者結果