亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

驗(yàn)證碼的三個(gè)常見漏洞和修復(fù)方法

 更新時(shí)間:2015年03月02日 09:21:20   投稿:junjie  
這篇文章主要介紹了驗(yàn)證碼的三個(gè)常見漏洞和修復(fù)方法,本文講解了把驗(yàn)證碼存儲(chǔ)在Cookie中、沒有進(jìn)行非空判斷、沒有及時(shí)銷毀驗(yàn)證碼三個(gè)常見問題和解決方法,需要的朋友可以參考下

把驗(yàn)證碼存儲(chǔ)在Cookie中

一般來說,我們會(huì)把驗(yàn)證碼的值用Session存儲(chǔ)起來,通過對(duì)比用戶提交的驗(yàn)證碼和Session中的驗(yàn)證碼,就可以知道輸入是否正確。由于Session會(huì)占用服務(wù)器資源,我曾經(jīng)想過是否可以把驗(yàn)證碼的值加密后存儲(chǔ)在Cookie中。不過事實(shí)證明,這只是異想天開罷了。

假設(shè)驗(yàn)證碼的值是a,通過sha1加密后得到的值為b = sha1(a),并且把b存儲(chǔ)在Cookie中。而用戶提交的驗(yàn)證碼值為c,通過判斷sha1(c)是否與b相等,可以知道輸入的驗(yàn)證碼是否正確。然而,Cookie是受客戶端控制的。如果用戶事先通過肉眼看到驗(yàn)證碼的值是a,又從Cookie中得知此時(shí)的加密值為b,那么,他只要在提交前把Cookie的值修改為b,提交的驗(yàn)證碼值為a,就可以永遠(yuǎn)通過驗(yàn)證。

沒有進(jìn)行非空判斷

這種情況可以直接用代碼來說明:

復(fù)制代碼 代碼如下:

if (Request["captcha"] == Session["captcha"] as string)
{
    // 驗(yàn)證通過,繼續(xù)操作
}

假設(shè)用戶繞過了系統(tǒng)提供的表單直接提交數(shù)據(jù),此時(shí)驗(yàn)證碼還沒生成,Session["captcha"]為空。用戶不提交驗(yàn)證碼時(shí),Request["captcha"]也為空。于是,驗(yàn)證通過了。

要解決這個(gè)問題,其實(shí)只要加個(gè)非空判斷就可以了:

復(fù)制代碼 代碼如下:

if (!String.IsNullOrEmpty(Request["captcha"]) &&
    Request["captcha"] == Session["captcha"] as string)
{
    // 驗(yàn)證通過,繼續(xù)操作
}

沒有及時(shí)銷毀驗(yàn)證碼

使用驗(yàn)證碼要遵循一個(gè)原則,在一次比對(duì)之后,無論用戶輸入正確與否,都要立刻將驗(yàn)證碼銷毀。

如果不這樣做,就可以出現(xiàn)以下情況:

假設(shè)用戶輸入錯(cuò)誤,且驗(yàn)證碼沒有重新生成,那么他就可以一直嘗試,直到正確為止。雖然機(jī)器對(duì)圖片的一次性識(shí)別率比較低,但是,如果同一張圖片你給它無限次機(jī)會(huì)的話,它還是可以識(shí)別出來的。
假設(shè)用戶輸入成功,且驗(yàn)證碼沒有銷毀,那么在Session過期之前,他就可以一直用這個(gè)驗(yàn)證碼通過驗(yàn)證。

相關(guān)文章

  • 關(guān)于C# 類和對(duì)象詳情

    關(guān)于C# 類和對(duì)象詳情

    類是C#面向?qū)ο缶幊痰幕締卧R粋€(gè)類都可以包含2種成員:字段和方法,接下來小編將在文章里向大家詳細(xì)介紹
    2021-09-09
  • C#中Thread(線程)和Task(任務(wù))實(shí)例詳解

    C#中Thread(線程)和Task(任務(wù))實(shí)例詳解

    .NET Framework在System.Threading命名空間中具有與線程相關(guān)的類,線程是一小組可執(zhí)行指令,這篇文章主要給大家介紹了關(guān)于C#中Thread(線程)和Task(任務(wù))的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Unity?UGUI的PhysicsRaycaster物理射線檢測(cè)組件介紹使用

    Unity?UGUI的PhysicsRaycaster物理射線檢測(cè)組件介紹使用

    這篇文章主要介紹了Unity?UGUI的PhysicsRaycaster物理射線檢測(cè)組件的介紹及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • C#定時(shí)器和隨機(jī)數(shù)

    C#定時(shí)器和隨機(jī)數(shù)

    在前一篇中我們介紹了鍵盤和鼠標(biāo)事件,其實(shí)還有一個(gè)非常常用的事件,就是定時(shí)器事件,如果要對(duì)程序?qū)崿F(xiàn)時(shí)間上的控制,那么就要使用到定時(shí)器。而隨機(jī)數(shù)也是很常用的一個(gè)功能,在我們要想產(chǎn)生一個(gè)隨機(jī)的結(jié)果時(shí)就要使用到隨機(jī)數(shù)。本文我們就來簡(jiǎn)單介紹一下定時(shí)器和隨機(jī)數(shù)。
    2015-06-06
  • Unity3D手機(jī)陀螺儀的使用方法

    Unity3D手機(jī)陀螺儀的使用方法

    這篇文章主要為大家詳細(xì)介紹了Unity3D手機(jī)陀螺儀的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C#設(shè)計(jì)模式之單例模式

    C#設(shè)計(jì)模式之單例模式

    這篇文章介紹了C#設(shè)計(jì)模式之單例模式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 深入DropDownList用法的一些學(xué)習(xí)總結(jié)分析

    深入DropDownList用法的一些學(xué)習(xí)總結(jié)分析

    本篇文章是對(duì)DropDownList的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#/VB.NET實(shí)現(xiàn)在Word中插入或刪除腳注

    C#/VB.NET實(shí)現(xiàn)在Word中插入或刪除腳注

    腳注,是可以附在文章頁(yè)面的最底端的,對(duì)某些東西加以說明,印在書頁(yè)下端的注文。這篇文章將為您展示如何通過C#/VB.NET代碼,以編程方式在Word中插入或刪除腳注,需要的可以參考一下
    2023-03-03
  • 如何用WindowsForm給窗口添加一些簡(jiǎn)單的動(dòng)畫效果

    如何用WindowsForm給窗口添加一些簡(jiǎn)單的動(dòng)畫效果

    這篇文章主要介紹了如何用WindowsForm給窗口添加一些簡(jiǎn)單的動(dòng)畫效果,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Unity之跑馬燈抽獎(jiǎng)效果單抽與連抽(附demo)

    Unity之跑馬燈抽獎(jiǎng)效果單抽與連抽(附demo)

    這篇文章主要介紹了Unity之跑馬燈抽獎(jiǎng)效果單抽與連抽,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評(píng)論