最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

假設(shè)驗(yàn)證碼的值是a,通過sha1加密后得到的值為b = sha1(a),并且把b存儲在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è)原則,在一次比對之后,無論用戶輸入正確與否,都要立刻將驗(yàn)證碼銷毀。

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

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

相關(guān)文章

  • C#加密算法匯總(推薦)

    C#加密算法匯總(推薦)

    以下是對C#中的加密算法進(jìn)行了匯總介紹,需要的朋友可以過來參考下
    2013-09-09
  • C#如何給PDF文件添加水印

    C#如何給PDF文件添加水印

    這篇文章主要為大家詳細(xì)介紹了C#如何給PDF文件添加水印的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#實(shí)現(xiàn)啟動(dòng),關(guān)閉與查找進(jìn)程的方法

    C#實(shí)現(xiàn)啟動(dòng),關(guān)閉與查找進(jìn)程的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)啟動(dòng),關(guān)閉與查找進(jìn)程的方法,通過簡單實(shí)例形式分析了C#針對進(jìn)程的啟動(dòng),關(guān)閉與查找的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 如何在c#中使用Zlib壓縮與解壓

    如何在c#中使用Zlib壓縮與解壓

    這篇文章主要介紹了如何在c#中使用Zlib壓縮與解壓,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • c# 死鎖和活鎖的發(fā)生及避免

    c# 死鎖和活鎖的發(fā)生及避免

    多線程編程時(shí),如果涉及同時(shí)讀寫共享數(shù)據(jù),就要格外小心。如果共享數(shù)據(jù)是獨(dú)占資源,則要對共享數(shù)據(jù)的讀寫進(jìn)行排它訪問,最簡單的方式就是加鎖。鎖也不能隨便用,否則可能會造成死鎖和活鎖。本文將通過示例詳細(xì)講解死鎖和活鎖是如何發(fā)生的以及如何避免它們。
    2020-11-11
  • C#多線程處理多個(gè)隊(duì)列數(shù)據(jù)的方法

    C#多線程處理多個(gè)隊(duì)列數(shù)據(jù)的方法

    這篇文章主要介紹了C#多線程處理多個(gè)隊(duì)列數(shù)據(jù)的方法,涉及C#線程與隊(duì)列的相關(guān)操作技巧,需要的朋友可以參考下
    2015-07-07
  • unity3D實(shí)現(xiàn)物體任意角度自旋轉(zhuǎn)

    unity3D實(shí)現(xiàn)物體任意角度自旋轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了unity3D實(shí)現(xiàn)物體任意角度自旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • c#典型工廠化實(shí)現(xiàn)實(shí)例

    c#典型工廠化實(shí)現(xiàn)實(shí)例

    c#典型工廠化實(shí)現(xiàn)實(shí)例,需要的朋友可以參考一下
    2013-03-03
  • C#Url操作類封裝、仿Node.Js中的Url模塊實(shí)例

    C#Url操作類封裝、仿Node.Js中的Url模塊實(shí)例

    這篇文章主要介紹了C#Url操作類封裝、仿Node.Js中的Url模塊,實(shí)例分析了C#Url操作類封裝的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-10-10
  • 舉例講解C#中自動(dòng)實(shí)現(xiàn)的屬性

    舉例講解C#中自動(dòng)實(shí)現(xiàn)的屬性

    這篇文章主要介紹了C#中自動(dòng)實(shí)現(xiàn)的屬性,包括使用自動(dòng)實(shí)現(xiàn)的屬性實(shí)現(xiàn)輕量類的方法,需要的朋友可以參考下
    2016-01-01

最新評論

县级市| 太谷县| 西畴县| 睢宁县| 黄平县| 高阳县| 辉南县| 罗江县| 石楼县| 临澧县| 北海市| 平塘县| 门源| 平潭县| 宁陵县| 成都市| 自贡市| 冷水江市| 文成县| 齐河县| 华亭县| 南漳县| 建湖县| 长治县| 固阳县| 什邡市| 伊金霍洛旗| 武陟县| 大足县| 德州市| 娱乐| 河西区| 怀集县| 玛沁县| 阳新县| 新闻| 沅陵县| 宜黄县| 汨罗市| 民丰县| 淅川县|