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

安全校驗(yàn)Session驗(yàn)證碼并避免繞開(kāi)驗(yàn)證碼攻擊

 更新時(shí)間:2012年01月08日 18:58:00   作者:  
校驗(yàn)驗(yàn)證碼的Session是否為空或者校驗(yàn)用戶輸入的驗(yàn)證碼是否合法,構(gòu)造安全表單的關(guān)鍵就是永遠(yuǎn)不要相信用戶的輸入
已經(jīng)記不得是在哪個(gè)網(wǎng)站上看到的了,一般情況下對(duì)于驗(yàn)證碼的校驗(yàn),大家很容易寫(xiě)成下面這樣:
復(fù)制代碼 代碼如下:

<%
If Request.Form("SecurityCode") = Session("SecurityCode") Then
' TODO : Database operations
Else
Response.Write "Security code incorrect!"
End If
%>

驗(yàn)證碼圖片產(chǎn)生Session("SecurityCode")并保存正確的驗(yàn)證碼值,然后獲得用戶提交的驗(yàn)證碼值,然后兩個(gè)一比對(duì)如果一樣則表示驗(yàn)證碼正確,否則驗(yàn)證碼錯(cuò)誤。表面上這樣的算法沒(méi)有什么問(wèn)題,但是對(duì)于一種特殊情況則會(huì)讓驗(yàn)證碼形同虛設(shè)。
首先我們知道,對(duì)于上面的算法有個(gè)核心的地方就是我們要訪問(wèn)產(chǎn)生驗(yàn)證碼圖片的那個(gè)文件才會(huì)有個(gè)保存驗(yàn)證碼值的Session,然后才能對(duì)用戶的輸入進(jìn)行正確的比對(duì),假如有心人構(gòu)造一個(gè)繞開(kāi)驗(yàn)證碼圖片文件的Form然后進(jìn)行提交會(huì)得到什么呢?Session("SecurityCode")不存在為空,如果此時(shí)用戶驗(yàn)證碼什么都不輸入,這時(shí)驗(yàn)證碼校驗(yàn)就形同虛設(shè)了。好,這里利用漏洞攻擊的關(guān)鍵就是驗(yàn)證碼的Session,我們很容易就能夠讓服務(wù)器不產(chǎn)生這個(gè)Session從而使這樣的攻擊變成可能。
解決的方法也很容易,校驗(yàn)驗(yàn)證碼的Session是否為空或者校驗(yàn)用戶輸入的驗(yàn)證碼是否合法,構(gòu)造安全表單的關(guān)鍵就是永遠(yuǎn)不要相信用戶的輸入。下面采用校驗(yàn)驗(yàn)證碼Session和用戶輸入的雙保險(xiǎn)辦法解決這個(gè)安全問(wèn)題:
復(fù)制代碼 代碼如下:

' str為要校驗(yàn)的驗(yàn)證碼,len為驗(yàn)證碼長(zhǎng)度
Function IsSecurityCodeValid(str, len)
IsSecurityCodeValid = Not CBool( _
IsEmpty(str) Or CStr(str)="" Or Len(str)<len)
End Function
If IsSecurityCodeValid(Request.Form("SecurityCode"), 4) AND _
IsSecurityCodeValid(Session("SecurityCode"), 4) AND _
Request.Form("SecurityCode") = Session("SecurityCode") Then
' TODO : Database operations
Else
Response.Write "Security code incorrect!"
End If

相關(guān)文章

  • git rebase -i 修改歷史提交的方法

    git rebase -i 修改歷史提交的方法

    這篇文章主要介紹了git rebase -i 修改歷史提交的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解Visual Studio使用Git忽略不想上傳到遠(yuǎn)程倉(cāng)庫(kù)的文件

    詳解Visual Studio使用Git忽略不想上傳到遠(yuǎn)程倉(cāng)庫(kù)的文件

    這篇文章主要介紹了Visual Studio使用Git忽略不想上傳到遠(yuǎn)程倉(cāng)庫(kù)的文件,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 怎樣刪除Git中緩存的用戶名和密碼

    怎樣刪除Git中緩存的用戶名和密碼

    這篇文章主要介紹了怎樣刪除Git中緩存的用戶名和密碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 手把手教你將Vim改裝成一個(gè)IDE編程環(huán)境(圖文)  吳垠

    手把手教你將Vim改裝成一個(gè)IDE編程環(huán)境(圖文) 吳垠

    這篇文章主要介紹了手把手教你將Vim改裝成一個(gè)IDE編程環(huán)境(圖文) 吳垠 ,需要的朋友可以參考下
    2016-01-01
  • 游戲開(kāi)發(fā)Unity2D圖片任意形狀破碎裂片效果展示

    游戲開(kāi)發(fā)Unity2D圖片任意形狀破碎裂片效果展示

    本篇文章屬于游戲開(kāi)發(fā)Unity進(jìn)階篇,主要介紹了游戲開(kāi)發(fā)Unity2D圖片任意形狀破碎裂片效果展示,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • vscode eslint插件報(bào)錯(cuò)Parsing error: Invalid ecmaVersion問(wèn)題

    vscode eslint插件報(bào)錯(cuò)Parsing error: Invalid 

    這篇文章主要介紹了vscode eslint插件報(bào)錯(cuò)Parsing error: Invalid ecmaVersion問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • git中ssh key配置詳解

    git中ssh key配置詳解

    這篇文章主要介紹了git中ssh key配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 搭建一個(gè)開(kāi)源項(xiàng)目?jī)煞N方式安裝git的詳細(xì)教程

    搭建一個(gè)開(kāi)源項(xiàng)目?jī)煞N方式安裝git的詳細(xì)教程

    這篇文章主要介紹了搭建一個(gè)開(kāi)源項(xiàng)目?jī)煞N方式安裝git,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 詳解git的基本使用方法

    詳解git的基本使用方法

    這篇文章主要介紹了詳解git的基本使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vscode配置leetcode插件并解決無(wú)法登錄問(wèn)題(圖文詳解)

    vscode配置leetcode插件并解決無(wú)法登錄問(wèn)題(圖文詳解)

    這篇文章主要介紹了vscode配置leetcode插件并解決無(wú)法登錄問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

本溪市| 凤凰县| 资兴市| 张家口市| 错那县| 沂源县| 南澳县| 永州市| 大埔县| 天津市| 库尔勒市| 托克逊县| 怀来县| 铜川市| 乐都县| 历史| 翼城县| 舟山市| 乌兰县| 宜川县| 华宁县| 六盘水市| 遂溪县| 广丰县| 临朐县| 商南县| 耒阳市| 抚松县| 苍山县| 兴海县| 太仆寺旗| 芦溪县| 嘉峪关市| 雷山县| 三原县| 九台市| 天台县| 灌南县| 象州县| 稻城县| 湟源县|