国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何防止Edit框中的Password不被非法獲取

如何防止Edit框中的Password不被非法獲取




    Windows雖然是一個(gè)功能強(qiáng)大的操作系統(tǒng),但其存在的一些先天性不足,給黑客留下了許多可乘之機(jī),著名的BO程序就是利用Windows的這些漏洞來(lái)危害計(jì)算機(jī)的安全。筆者最近發(fā)現(xiàn)了一個(gè)很流行的專門獲取Edit框Password的工具,甚至其源代碼已在某報(bào)紙發(fā)表,這無(wú)疑是對(duì)Edit的Password功能的完全否定。本文將首先分析非法獲取Password的原理,然后給出用Visual C++來(lái)實(shí)現(xiàn)保護(hù)Edit框中的Password不被非法獲取的對(duì)策。

  (一) 非法獲取Password的原理

  Edit是Windows的一個(gè)標(biāo)準(zhǔn)控件,當(dāng)把其Password屬性設(shè)為True時(shí),就會(huì)將輸入的內(nèi)容屏蔽為星號(hào)(*),從而達(dá)到保護(hù)的目的。而Edit框中的內(nèi)容可通過(guò)發(fā)WM_GETTEXT,EM_GETLINE消息來(lái)獲取。黑客程序就是利用Edit的這個(gè)特性,首先枚舉當(dāng)前程序的所有子窗口,當(dāng)發(fā)現(xiàn)枚舉的窗口是EDIT并且具有ES_PASSWORD屬性時(shí),則通過(guò)SendMessage向此窗口發(fā)送WM_GETTEXT或EM_GETLINE消息,這樣Edit框中的內(nèi)容就一目了然了。

  (二) 對(duì)Password進(jìn)行保護(hù)

  由上述分析可看出,Edit的漏洞在于沒有檢查發(fā)送WM_GETTEXT或EM_GETLINE消息者的身份,只要找到Edit窗口句柄,任何進(jìn)程都可獲取其內(nèi)容。這里給出一種簡(jiǎn)單的方法來(lái)驗(yàn)證發(fā)送消息者的身份是否合法。

  1) 創(chuàng)建新CEdit類

  從CEdit繼承一個(gè)子類CPasswordEdit, 申明全局變量g_bAuthorIdentity表明消息發(fā)送者的身份:

    BOOL g_bAuthorIdentity;
    
  然后響應(yīng)CWnd的虛函數(shù)DefWindowProc,在這個(gè)回調(diào)函數(shù)中進(jìn)行身份驗(yàn)證:

LRESULT CPasswordEdit::DefWindowProc(UINT message,
WPARAM wParam, LPARAM lParam)
    {
        // 對(duì)Edit的內(nèi)容獲取必須通過(guò)以下兩個(gè)消息之一
        if(( message == WM_GETTEXT) ||
        ( message == EM_GETLINE))
        {
            // 檢查是否為合法
            if( !g_bAuthorIdentity)
            {
                // 非法獲取,顯示信息
                AfxMessageBox(_T("我的密碼,可不能讓你看哦!"));
                //
                return 0;
            }
            // 合法獲取
            g_bAuthorIdentity = FALSE;
        }
        return CEdit::DefWindowProc(message, wParam, lParam);
    }
  2) 在數(shù)據(jù)輸入對(duì)話框中做處理

  在對(duì)話框中申明一個(gè)類成員m_edtPassword:

    CPasswordEdit m_edtPassword;
  然后在對(duì)話框的OnInitDialog()中加入下列代碼:

    m_edtPassword.SubclassDlgItem(IDC_EDIT_PASSWORD, this);
  其目的是將控制與新類做關(guān)聯(lián)。

  之后在對(duì)話框的數(shù)據(jù)交換中將身份設(shè)為合法:

    void CDlgInput::DoDataExchange(CDataExchange* pDX)
    {
        // 如果獲取數(shù)據(jù)
// 注意:對(duì)于CPropertyPage類這里不需要
        if( pDX- >m_bSaveAndValidate) 條件
        if( pDX- >m_bSaveAndValidate)
        {
            g_bAuthorIdentity = TRUE;
        }
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CDlgInput)
        DDX_Text(pDX, IDC_EDIT_PASSWORD, m_sPassword);
        //}}AFX_DATA_MAP
}
  這樣,Password輸入框就會(huì)受到保護(hù)。

  (三) 需要注意的問題

  以上的方法僅針對(duì)VC程序,對(duì)于VB程序,需要借助VC做一個(gè)Password的ActiveX 控件,實(shí)現(xiàn)方法與上類似。同時(shí)以上程序在Visual C++6.0上通過(guò),并且用黑客程序 PWBTool測(cè)試通過(guò)。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
月光軟件站 - 編程文檔 - VC語(yǔ)言 - 非法探取密碼的原理及其防范
VC學(xué)習(xí)日記:對(duì)話框控件訪問的七種方式
CLRCDlg::CLRCDlg(CWnd* pParent /*=NULL*/): CDialog(CLRCDlg::IDD, pParent)
VC 獲取靜態(tài)文本控件和文本框控件上的文本方法
動(dòng)態(tài)創(chuàng)建按鈕 復(fù)制控件 獲取/設(shè)置文本內(nèi)容 孫鑫VC學(xué)習(xí)筆記 7(1)
孫鑫VC視頻教程筆記之第七課“對(duì)話框(上)”
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服