如何防止密码被非法获取?

本文介绍了一种保护密码框安全的方法,通过拦截特定消息避免密码被非法获取。具体做法是在密码输入框使用CMyProtectEdit类替换CEdit,并通过DefWindowProc函数对WM_GETTEXT和EM_GETLINE消息进行拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从下载的文档中看到的,不知道出处。如作者看到,请联系我修改,谢谢合作!

 

[问题提出]
  这两天大家比较专注在获取Edit密码框的密码.在盗取时,我们如何防范呢?
  [解决方法]
  此方法针对于通过SendMessage向此窗口发送WM_GETTEXTEM_GETLINE消息来取得密码.跟我来.
 [程序实现]
  方法很简单,CWnd::DefWindowProc函数拦截得到的消息(Edit发的).
  建立名为My的对话框工程.建立一个Edit控件ID=IDC_EDIT1.建一个新类名为CMyProtectEdit,派生于CEdit.
  在MyDlg.cpp中声明全局变量:BOOL g_bIdentity;
  BOOL g_bIdentity;
  在MyProtecEdit.cpp:
  extern BOOL g_bIdentity;
  响应CMyProtectEditDefWindowProc函数:
  LRESULT CMyProtectEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
  {
    // TODO: Add your specialized code here and/or call the base class
    // Edit的内容获取必须通过以下两个消息之一,不对其采用默认的处理:
    if(( message == WM_GETTEXT) || ( message == EM_GETLINE))
    {  //检查是否为合法
     if(!g_bIdentity)
     {  //非法获取,显示非法信息
       AfxMessageBox(_T("不能让你看我的密码,:( !"));
       return 0;
     )
     g_bIdentity = FALSE;//合法获取
    }
    return CEdit::DefWindowProc(message, wParam, lParam);
  }
  然后在MyDlg.cpp
  void CMyDlg::DoDataExchange(CDataExchange* pDX)
  {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CGetPasswordDlg)
    // NOTE: the ClassWizard will add DDX and DDV calls here
    if( pDX->m_bSaveAndValidate)
    {
     g_bIdentity = TRUE;
    }   
    //}}AFX_DATA_MAP
  }
  即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值