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

清泛编译
30. 如何防止密码被非法获取?

 [问题提出]
  这两天大家比较专注在获取Edit密码框的密码.在盗取时,我们如何防范呢?
 
 [解决方法]
  此方法针对于通过SendMessage向此窗口发送WM_GETTEXT或EM_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;

  响应CMyProtectEdit的DefWindowProc函数:
  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
  }
  即可.找个程序(盗取)的试试.
本文导航

MFC 总结 技巧

分享到:
评论加载中,请稍后...
App Inventor 2 中文网,少儿编程首选平台!
回到顶部