Web安全技術 課件 9業(yè)務邏輯安全_第1頁
Web安全技術 課件 9業(yè)務邏輯安全_第2頁
Web安全技術 課件 9業(yè)務邏輯安全_第3頁
Web安全技術 課件 9業(yè)務邏輯安全_第4頁
Web安全技術 課件 9業(yè)務邏輯安全_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第9章業(yè)務邏輯安全01用戶管理功能的實現(xiàn)02用戶授權(quán)管理及安全分析03用戶身份識別技術及安全防護04目錄CONTENTS業(yè)務邏輯安全風險存在的前提業(yè)務邏輯

業(yè)務邏輯實現(xiàn)的前提是:要有效區(qū)分每個用戶,針對每個用戶提供獨立的服務內(nèi)容,并且允許客戶與服務器進行大量交互。

在Web應用場景下,一個網(wǎng)站也會涉及多種用戶身份:游客、普通用戶、VIP用戶、客服人員、業(yè)務主管、網(wǎng)站管理員等。每類用戶都會對網(wǎng)站正常工作帶來影響。這就要求網(wǎng)站的運營者必須對網(wǎng)站的各類用戶進行權(quán)限劃分,方可實現(xiàn)網(wǎng)站的正常運營,避免產(chǎn)生混亂。業(yè)務邏輯安全風險存在的前提業(yè)務邏輯

針對Web應用的攻擊就是一個從零權(quán)限到最高權(quán)限的過程。攻擊者在初始狀態(tài)下沒有任何權(quán)限,如果能獲得最高權(quán)限(通常為網(wǎng)站管理員權(quán)限,可操作網(wǎng)站的全部功能),就相當于取得了網(wǎng)站的管理權(quán)限。同理,如果攻擊者退而求其次,只取得某一個用戶權(quán)限,那么攻擊者就可以利用這個用戶的身份開展相關業(yè)務,如轉(zhuǎn)賬、購買商品等??傊?,攻擊者的核心目標就是通過各種手段提升自己的權(quán)限,權(quán)限越大,對后續(xù)的攻擊越有幫助。

權(quán)限管理作為網(wǎng)站對用戶進行分級管理的核心手段,直接決定了該網(wǎng)站用戶、管理員的安全及網(wǎng)站自身的安全程度。近年來,針對網(wǎng)絡邏輯問題進行的攻擊呈爆發(fā)式增長,核心問題是對權(quán)限的邏輯進行攻擊。因此,需要權(quán)限進行全面、有效的管理。業(yè)務邏輯安全風險存在的前提業(yè)務邏輯用戶管理的基本內(nèi)容用戶管理是實現(xiàn)權(quán)限劃分的重要手段。當用戶注冊時,根據(jù)用戶的特點或預期目標,套用相關的規(guī)則或注冊流程,即可實現(xiàn)對不同用戶的管理,即對用戶的權(quán)限管理。

但是在權(quán)限管理時,由于Web應用中的角色較多,并且多數(shù)角色的權(quán)限細分程序極高。權(quán)限的過于細化也容易給網(wǎng)站管理帶來不便。為了解決這個問題,通常建議從多個角度進行劃分,即分層管理權(quán)限。業(yè)務邏輯安全風險存在的前提業(yè)務邏輯1.分類管理分類管理網(wǎng)站運維人員網(wǎng)站后臺人員網(wǎng)站用戶日常維護人員網(wǎng)站設計人員客服人員產(chǎn)品發(fā)布、廣告制作人員VIP用戶普通客戶游客用戶管理的基本內(nèi)容業(yè)務邏輯安全風險存在的前提業(yè)務邏輯2.分權(quán)管理分權(quán)管理后臺管理權(quán)限前臺用戶權(quán)限登錄后臺、添加信息等上傳文件、連接數(shù)據(jù)庫等用戶可登錄實現(xiàn)留言、訂購等功能用戶不登錄實現(xiàn)瀏覽功能用戶管理的基本內(nèi)容業(yè)務邏輯安全風險存在的前提業(yè)務邏輯用戶管理所涉及Web應用的所有權(quán)限點,并且每個步驟都涉及權(quán)限的提升、修改、刪除等。每項功能都在一定程度上影響著用戶賬戶安全,決定著當前用戶賬戶的安全程度。業(yè)務邏輯安全風險存在的前提用戶管理的涉及的功能業(yè)務邏輯邏輯問題的主要表現(xiàn)在程序的整體執(zhí)行流程上。業(yè)務邏輯相對于Web應用的基礎安全來說,其主要功能都需要用戶經(jīng)過多個步驟方可完成。例如,對于用戶注冊功能,需要用戶打開注冊頁面、填寫個人信息、提交表單,某些站點還需要用戶進行短信或郵件驗證。這個過程中,只要有任意一個環(huán)境出現(xiàn)判斷偏差,就會造成安全隱患。常見的用戶管理邏輯漏洞可參與以下場景:我的賬號怎么被修改密碼了?我怎么總是接到短信驗證碼?我賬號中的信息怎么被別人知道的?……業(yè)務邏輯安全風險存在的前提用戶管理邏輯的漏洞業(yè)務邏輯我們對上述場景可能都不陌生,甚至在生活中都遇到過上述情況。作為攻擊者來說,如果登錄自己的賬號,但可通過各種方式實際操作到B賬號,就可以獲取B賬號的所有權(quán)限,從而產(chǎn)生上述場景。業(yè)務邏輯安全風險存在的前提用戶管理邏輯的漏洞業(yè)務邏輯1.繞過授權(quán)驗證

每個用戶都有相應的用戶權(quán)限,當某個用戶進行某項操作時產(chǎn)生一個ID值,當這個ID被其他用戶盜用時,即可造成權(quán)限繞過問題。

例如,A用戶發(fā)表一篇文章的地址是/A,攻擊者B發(fā)表文章時將自己的地址也改為/A,這樣服務器若沒有其他的檢查措施,那么A用戶的文章就會被B用戶修改。業(yè)務邏輯安全風險存在的前提用戶管理邏輯的漏洞業(yè)務邏輯2.密碼找回邏輯漏洞

密碼找回功能本意是設計給忘記密碼的用戶,以便他們能夠找回自己的密碼。一般的假設都是這樣的:首先賬號綁定了一個郵箱,在找回密碼時,輸入用戶的賬號,之后會發(fā)送一封郵件到用戶郵箱,用戶打開郵箱即可重置密碼。這就存在一個典型的邏輯問題:用戶修改密碼時不需要提供當前的密碼。

攻擊者可以通過抓包將用戶郵箱修改為自己的郵箱,這樣就可以修改用戶的密碼了。業(yè)務邏輯安全風險存在的前提用戶管理邏輯的漏洞業(yè)務邏輯3.支付邏輯漏洞

在一些交易網(wǎng)站上,開發(fā)者一般的設計是這樣的:用戶購買商品,然后根據(jù)價格得到一個總價,再根據(jù)總價來扣錢。但若邏輯處理不當,會出現(xiàn)很多問題,若用戶購買的商品是負數(shù),那么計算的總計就是負數(shù)了,這樣的話,系統(tǒng)的處理就會返錢給用戶。業(yè)務邏輯安全風險存在的前提用戶管理邏輯的漏洞業(yè)務邏輯4.指定賬戶惡意攻擊

網(wǎng)站的業(yè)務功能與安全策略有可能是對立的。例如,某競拍網(wǎng)站為了對抗密碼暴力破解,規(guī)定短時間內(nèi)賬戶登錄失敗5次,就鎖定賬號一段時間。該網(wǎng)站的核心業(yè)務是商品拍賣,注冊用戶可以給喜歡的商品出價,在拍賣時間截止后,商品將為出價高者所得。

這其中存在明顯的邏輯問題。某攻擊者在給商品出價后,在網(wǎng)站上繼續(xù)觀察誰出了一個更高的價格,當發(fā)現(xiàn)有人出價更高時,就去惡意登錄這個用戶的賬號,當?shù)卿浭〈螖?shù)達到5次,該賬號被鎖定,該賬號所出的價格作廢。因此該黑客可以用最低的價格拍賣得到想要的商品。業(yè)務邏輯安全風險存在的前提用戶管理邏輯的漏洞01用戶管理功能的實現(xiàn)02用戶授權(quán)管理及安全分析03用戶身份識別技術及安全防護04目錄CONTENTS業(yè)務邏輯安全風險存在的前提業(yè)務邏輯用戶管理功能的實現(xiàn)由于HTTP協(xié)議的無狀態(tài)特性,導致用戶每次訪問網(wǎng)站頁面時,Web服務器不知道用戶的本次訪問和上次訪問有什么關聯(lián)。從用戶角度來說,如果在一個網(wǎng)站中,每次打開新頁面均需輸入用戶名和密碼,那么用戶體驗將非常差。因此,Web系統(tǒng)在開發(fā)過程中需引入客戶端保持方案,使服務器在一定時間內(nèi)對連接到Web服務器的客戶端進行識別。目前,客戶端保持方案主要采用的技術為cookie和session兩種方式??傮w來說,cookie采用的是在客戶端保持狀態(tài)的方案,而Session采用的是在服務端保持狀態(tài)的方案。業(yè)務邏輯客戶端保持用戶管理功能的實現(xiàn)首先,服務器應用知道,當前在為誰服務?

在操作系統(tǒng)上運行一個應用程序時,通常過程會為用戶打開程序并執(zhí)行操作,操作完成后關閉當前程序。由于此過程中為與程序的交互,操作系統(tǒng)清楚我是誰,并知道何時啟動應用程序及終止。但是在Web應用上,由于HTTP協(xié)議的無狀態(tài)性,服務器端不能保存客戶狀態(tài)。這就導致服務器不知道用戶是誰以及用戶做了什么,更不能直接區(qū)分用戶。

HTTP協(xié)議的無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。這意味著如果后續(xù)處理需要前面的信息,則必須重傳之前的信息,從而導致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務器不需要先前信息時,則應答速度較快。業(yè)務邏輯用戶管理功能的實現(xiàn)客戶端與服務器進行動態(tài)交互的Web應用程序(典型的應用場景為在線商店、BBS等)出現(xiàn)之后,HTTP無狀態(tài)的特性嚴重阻礙了這些應用程序的功能實現(xiàn),因為這些交互需要知道前后操作的關聯(lián),并且每個用戶必須擁有獨立的交互環(huán)境。以最簡單的購物車應用為例,服務器要知道用戶之前選擇了什么商品,才能實現(xiàn)訂單生成、購買等一系列后續(xù)在線業(yè)務流程。

目前有兩種用于保持HTTP連接狀態(tài)的技術,一種是Cookie,一種是Session??蛻舳吮3謽I(yè)務邏輯用戶管理功能的實現(xiàn)接下來需要考慮的問題為:如果創(chuàng)建并識別用戶身份,并將用戶身份保存下來?

這就是Web應用系統(tǒng)對用戶身份的創(chuàng)建及使用功能。目前,絕大部分采用Web中間件+數(shù)據(jù)庫的模式運行。通過Web服務器對用戶提出的申請進行識別,并自動連接數(shù)據(jù)庫,在數(shù)據(jù)庫中添加或查詢相關信息,即可實現(xiàn)此類功能。常見的Web中間件+數(shù)據(jù)的組合形式如下:PHP+MySQL:業(yè)內(nèi)最常見的模式LAMP(Linux+Apache+MySQL+PHP)ASP+Access.NET+MSSQLServerJSP+Oracle客戶端保持業(yè)務邏輯用戶管理功能的實現(xiàn)

1.Cookie服務器在對用戶登錄請求進行校驗并通過后,生成唯一的Cookie并發(fā)送給用戶,之后用戶在此網(wǎng)站中執(zhí)行任意點擊功能,瀏覽器均會將服務器生成的Cookie一并發(fā)送從而達到區(qū)分用戶的目的。目前,標準Cookie功能是利用擴展HTTP協(xié)議來實現(xiàn)的。Web服務器通過在HTTP的響應頭中加上一行特殊的指示來提示瀏覽器按照指示生成相應的Cookie,并由服務器端交給瀏覽器存放在Cookie文件中。

客戶端保持業(yè)務邏輯用戶管理功能的實現(xiàn)

1.CookieCookie的使用是由瀏覽器按照一定的原則在后臺自動發(fā)送給服務器的。瀏覽器檢查所有存儲的Cookie,如果某個Cookie所聲明的作用范圍大于等于將要請求的資源所在的位置,則把該Cookie附在請求資源的HTTP請求頭上發(fā)送給服務。

客戶端保持業(yè)務邏輯用戶管理功能的實現(xiàn)1.

CookieCookie的內(nèi)容主要包括名字、內(nèi)容、創(chuàng)建時間、過期時間、路徑和域。路徑與域一起構(gòu)成Cookie的作用范圍。

若不設置過期時間,則表示這個Cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口時,Cookie消失。這種生命期為瀏覽器會話期的Cookie稱為會話Cookie。

若設置了過期時間,瀏覽器就會把Cookie保存到硬盤上,關閉后再次打開瀏覽器,這些Cookie仍然有效,直到超過設定的過期時間。存儲在使盤上的Cookie可以在不同的瀏覽器進程間共享,比如在兩個IE窗口間共享,方便用戶進行多窗口操作,也為網(wǎng)站設計帶來方便??蛻舳吮3謽I(yè)務邏輯用戶管理功能的實現(xiàn)1.

Cookie這樣會出現(xiàn)一個問題:Web服務器必須充分相信用戶提交的數(shù)據(jù)是正確的。如果不正確,或者提交的Cookie數(shù)據(jù)是攻擊者偽造的,服務器也可能會根據(jù)Cookie中的假信息進行執(zhí)行。這主要是由于Cookie由客戶端保存,攻擊者可以利用這種特性,完全修改Cookie的內(nèi)容,達到欺騙目標服務器的效果。

這種情況下,僅通過Cookie無法阻止攻擊者的各類仿冒攻擊,因此,還需引入Session來解決此問題。

客戶端保持業(yè)務邏輯用戶管理功能的實現(xiàn)2.

Session在利用Cookie實現(xiàn)用戶管理的環(huán)境下,假設Web應用要驗證用戶是否登錄,就必須在Cookie中保存用戶名和密碼(可能是用MD5加密后字符串)或用戶登錄成功的憑證,并在每次請求頁面的時候進行驗證。如果用戶名和密碼存儲在數(shù)據(jù)庫,那么每次請求都查詢一次數(shù)據(jù)庫,給數(shù)據(jù)庫造成很大負擔,同時在用戶訪問一個新頁面或開展一項新業(yè)務還需重新登錄,這樣的環(huán)境對用戶而言極不方便,甚至會放棄使用當前站點??蛻舳吮3謽I(yè)務邏輯用戶管理功能的實現(xiàn)2.Session由于Cookie保存在客戶端且需在訪問時由瀏覽器提交給服務器,這會在傳輸過程中導致客戶端Cookie中的信息可被修改。假如服務器用存儲“admin”變量來表示用戶是否登錄,admin為true的時候表示登錄,為false時表示未登錄。使用Cookie時,在第一次通過驗證后會將admin等于true存儲在Cookie中,下次就不會再驗證了,這樣會有非常大的隱患。假如有人偽造一個值為true的admin變量,那就可直接獲得admin的管理權(quán)限,這是非常嚴重的業(yè)務邏輯漏洞??蛻舳吮3謽I(yè)務邏輯用戶管理功能的實現(xiàn)2.

Session由于存在上述隱患,因此可以使用Session來避免。Session的實現(xiàn)原理與Cookie有非常大的不同。Session內(nèi)容存儲在服務器端,遠程用戶無法直接修改Session文件件的內(nèi)容,因此可以只存儲一個admin變量來判斷用戶是否登錄。首次驗證通過后設置admin值為true,以后判斷該值是否為true。假如不是,轉(zhuǎn)入登錄界面。由于這些信息全部保存在Web服務器本地,用戶無法接觸到,因此安全性可得到保證。

目前,Session廣泛應用于Web系統(tǒng)中,并且與Cookie配合來開展應用。

PHP中利用Session時,必須先調(diào)用Session_start()函數(shù)。客戶端保持業(yè)務邏輯用戶管理功能的實現(xiàn)2.

Session當?shù)谝淮卧L問網(wǎng)站時,Session_start()函數(shù)就會創(chuàng)建一個唯一的SessionID,并自動通過HTTP的響應頭,將這個SessionID保存到客戶端Cookie中。同時,也在服務器端創(chuàng)建一個以SessionID命名的文件,用于保存這個用戶的會話信息。當同一個用戶再次訪問這個網(wǎng)站時,也會自動通過HTTP的請求頭將Cookie中保存的SessionID攜帶過來,這時Session_start()函數(shù)就不會再去分配一個新的SessionID,而是在服務器的硬盤中尋找和這個SessionID同名的Session文件,將之前為這個用戶保存的會話信息讀出,并在當前腳本中應用,達到跟蹤用戶的目的??蛻舳吮3?1用戶管理功能的實現(xiàn)02用戶授權(quán)管理及安全分析03用戶身份識別技術及安全防護04目錄CONTENTS業(yè)務邏輯安全風險存在的前提業(yè)務邏輯用戶授權(quán)管理及安全性分析用戶授權(quán)管理是指用戶在未獲得任何網(wǎng)站的用戶權(quán)限時,用戶可實現(xiàn)對自己的身份的注冊,并根據(jù)用戶的私有信息(用戶名/密碼)等進行成功登錄,之后根據(jù)用戶登錄成功信息合理開展后續(xù)業(yè)務。登錄過程即為獲得網(wǎng)站對應此用戶的權(quán)限,即從零權(quán)限到權(quán)限獲取的過程。零權(quán)限權(quán)限獲取權(quán)限驗證最高權(quán)限Web訪問用戶注冊密碼找回用戶登錄密碼修改綁定信息修改管理權(quán)限業(yè)務邏輯用戶第一次訪問目標站點時,從這個網(wǎng)站的權(quán)限管理角度來看,該用戶的權(quán)限為零,只有公共頁面瀏覽權(quán)限。如果用戶需要開展業(yè)務,則需先進行賬戶注冊,再利用注冊成功的用戶名及密碼登錄網(wǎng)站。這期間考慮到用戶的使用特點及需求,還添加了相應的密碼找回及登錄成功后的密碼修改功能。大部分網(wǎng)站還支持郵箱、手機等用戶個人信息的綁定,用戶可根據(jù)個人信息實現(xiàn)密碼找回等功能。這部分功能均通過綁定信息來實現(xiàn)修改。

所有的Web系統(tǒng)應用都是獲得用戶權(quán)限之后才能開展工作,因此,用戶權(quán)限管理的安全直接關系到整體系統(tǒng)的業(yè)務體系安全性。用戶授權(quán)管理及安全性分析業(yè)務邏輯用戶注冊功能的基本流程如下:用戶提交注冊表單→服務器接收到用戶申請,創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)(insert)

→服務器接收數(shù)據(jù)庫返回值→告知用戶注冊成功或失敗。用戶注冊階段安全情況用戶授權(quán)管理及安全性分析業(yè)務邏輯

if($_POST['submit']){$username=$_POST["username"];$sql=“selectuserNamefromuser_infowhereuserName=‘$username'";

$query=mysql_query($sql);$rows=mysql_num_rows($query);if($rows>0){

echo“<scripttype=‘text/javascript’>alert(‘用戶名已存在’);location='javascript:history.back()';</script>";}

else{$user_in="insertintouser_info(username,pass,sex,qq,email,img)

values('$_POST[username]',md5(‘$_POST[pass]'),'$_POST[sex]','$_POST[qq]','$_POST[email]','$_POST[img_select]')";mysql_query($user_in);echo"<scripttype='text/javascript'>alert('注冊成功');location.href='login.php';</script>";}}用戶授權(quán)管理及安全性分析用戶注冊階段安全情況業(yè)務邏輯

常見的用戶注冊流程中出現(xiàn)的安全隱患有:沒有用戶重復注冊驗證過程,可能會出現(xiàn)用戶重復注冊沒有對用戶輸入數(shù)據(jù)進行校驗,易出現(xiàn)空格覆蓋、萬能密碼繞過等隱患沒有注冊申請數(shù)據(jù)限制,可能會被批量注冊用戶授權(quán)管理及安全性分析用戶注冊階段安全情況業(yè)務邏輯

重復注冊是指用戶在注冊過程中,對同樣的信息進行多次提交。如果服務器沒有業(yè)務重復檢測機制,就會對用戶多次提交的相同信息進行處理,導致后臺數(shù)據(jù)增多、用戶權(quán)限混亂等問題。1.用戶重復注冊用戶授權(quán)管理及安全性分析用戶注冊階段安全情況業(yè)務邏輯應對重復注冊問題的有效手段就是利用token機制。

token機制的防護原理為:當用戶請求注冊頁面的時候,服務器會給瀏覽器返回正常的頁面和一個隱藏的輸入,其中就包含服務器生成的token。token的值是一個服務器生成的字符串。

當用戶點擊提交的時候,這個token會被同時加載到服務器端。服務器得到這個token后,會將從用戶端獲得的token與當前用戶session中保存的token進行比對。之后,無論比對結(jié)果是否匹配,均立即刪除服務器上當前的token,并根據(jù)算法重新生成新的token。當用戶再次提交的時候,因為找不到對應的token,所以不會重復提交用戶的信息。

重復注冊的問題在現(xiàn)有Web系統(tǒng)中已基本消失,但在很多早期的Web應用系統(tǒng)或者內(nèi)網(wǎng)控制系統(tǒng)中可能依舊存在。用戶授權(quán)管理及安全性分析用戶注冊階段安全情況1.用戶重復注冊業(yè)務邏輯在用戶注冊功能中,由于有大量用戶注冊應用,期間肯定會出現(xiàn)大量重復數(shù)據(jù),如用戶名等信息。如果不進行數(shù)據(jù)校驗,會導致用戶注冊混亂,極大地影響用戶體驗。但目前此類問題基本不存在,因為通過利用各類判斷機制,對用戶不能重復的數(shù)據(jù)進行多次校驗,從而有效避免此類問題。2.不校驗用戶注冊數(shù)據(jù)用戶授權(quán)管理及安全性分析用戶注冊階段安全情況業(yè)務邏輯

MySQL數(shù)據(jù)庫存在一個特性,即會自動刪除參數(shù)的前后空格,然后再將其存儲人庫。例如,admin_

(后面為空格),當這條數(shù)據(jù)進入數(shù)據(jù)庫時,MySQL自動將空格去掉再入庫。這種可自動對參數(shù)的空格進行刪除的特性,會導致在某些情況下可實現(xiàn)惡意的用戶信息覆蓋。攻擊步驟如下:1)當前Web應用已有用戶admin。2)用戶提交注冊,用戶名為admin_(admin后有個空格)。3)數(shù)據(jù)可通過PHP過濾規(guī)則,并傳至數(shù)據(jù)庫。4)數(shù)據(jù)庫接收到數(shù)據(jù)后,自動刪除admin后面的空格,即直接插入了用戶名為admin的創(chuàng)建請求,對原有的admin用戶進行了覆蓋。若此網(wǎng)站的管理員使用的正好是admin這個賬戶,則會產(chǎn)生極大的安全隱患。用戶授權(quán)管理及安全性分析用戶注冊階段安全情況2.不校驗用戶注冊數(shù)據(jù)業(yè)務邏輯針對此問題,有效應對措施如下:PHP中存在一個過濾函數(shù),能自動去掉字符串前后的空格。函數(shù)格式如下:trim($_GET['P']);也可以利用str_replace,ereg_replace對輸入?yún)?shù)前后的空格進行刪除.避免出現(xiàn)元問題。在目前的Web應用開發(fā)過程中,開發(fā)人員基本上都應用了參數(shù)的過濾機制上述漏洞存在的可能性極低。用戶授權(quán)管理及安全性分析用戶注冊階段安全情況2.不校驗用戶注冊數(shù)據(jù)業(yè)務邏輯在用戶注冊階段,最有威脅的攻擊類型就是批量注冊。

在現(xiàn)有的防護技術中,有不少針對批量注冊的技術手段,但歸根結(jié)底都是針對用戶行為進行限制或添加額外驗證。由于惡意批量注冊行為的表現(xiàn)方式與正常用戶注冊沒有區(qū)別,也沒有顯著特征能證明當前用戶注冊行為是正常還是異常,就導致添加額外的驗證方式雖然提升了批量注冊的實現(xiàn)難度,但過多的驗證方式也會導致正常用戶的抵觸,這需要應用豐富的業(yè)務安全防護經(jīng)驗來進行平衡。3.無法阻止的批量注冊用戶授權(quán)管理及安全性分析用戶注冊階段安全情況業(yè)務邏輯阻止批量注冊行為通常采用以下的手段:1)對相同用戶信息進行注冊頻率限制單IP注冊頻率限制表單加驗證碼需要姓名加身份證的認證

2)采用二次身份校驗技術需要驗證用戶郵箱手機綁定驗證用戶授權(quán)管理及安全性分析用戶注冊階段安全情況3.無法阻止的批量注冊業(yè)務邏輯所有的限制手段的目的均為提升批量注冊的難度,但無法從根本上阻止惡意用戶,因為系統(tǒng)無法識別用戶注冊的真實意圖。

因此,從防御視角來看,應盡可能提高惡意注冊的難度,使批量注冊的成本高于從網(wǎng)站獲取到的利益,這樣為解決此問題的唯一出路。用戶授權(quán)管理及安全性分析用戶注冊階段安全情況3.無法阻止的批量注冊業(yè)務邏輯用戶登錄階段安全情況用戶授權(quán)管理及安全性分析業(yè)務邏輯1.明文傳輸用戶名和密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況業(yè)務邏輯1.明文傳輸用戶名和密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況要解決散列值容易被破解的問題,標準方式是在原有密碼上添加相應的salt(salt稱為鹽,也就是一段字符串或特定內(nèi)容),再利用MD5()計算相應的散列值后進行傳輸,即可有效提升密碼在傳輸過程中的安全。

添加salt的效果是直接提升明文復雜度,以避免MD5被破解。業(yè)務邏輯1.明文傳輸用戶名和密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況具體方法為:

在客戶端添加salt,經(jīng)過MD5加密后傳輸,服務器接收到用戶提交的密碼(加salt后的MD5)后再加salt后利用MD5加密后存儲。

這樣的存儲過程可有效防止攻擊者利用劫持監(jiān)聽技術獲得密碼,從而知道后臺的利用情況。而且,在添加salt時,不要僅僅利用拼接方式,在實際業(yè)務場景下,推薦采用特定位數(shù)插入、倒序、定向位數(shù)替換等多種方法處理,提升破解難度。業(yè)務邏輯1.明文傳輸用戶名和密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況具體方法為:

$salt=substr(uniqid(rand()),-6);

$password=md5(md5($password+$salt).$salt);

雙加鹽方式)

業(yè)務邏輯1.明文傳輸用戶名和密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況MD5通常用于對特定內(nèi)容的校驗功能上,如用戶登錄功能,服務器主要對用戶的提交參數(shù)進行校驗,這個過程中Web服務器無需知道用戶參數(shù)的明文。

但還有很多場景需要Web服務器獲取,并且要求在傳輸過程中加密,這個時候則需要對稱/非對稱加密算法實現(xiàn)。

這里不討論密碼學中如何根據(jù)加密推斷解密,因為即使是無法逆向的MD5/SHA-1等算法,均可利用彩虹表、相關MD5密碼網(wǎng)站等方式獲得明文。因此,明文傳輸用戶名/密碼,并不能只通過加密來保障安全。

業(yè)務邏輯1.明文傳輸用戶名和密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況

如何有效保障傳輸過程中用戶名密碼的安全?傳輸過程很容易被人探測并分析,因此在傳輸過程中密碼必須加密傳輸,避免形成中間人攻擊。普通的HTTPS有單向認證與雙向認證兩種情況。其中單向認證的特點是僅用戶端按照密鑰要求進行加密后傳輸,服務端并不針對用戶端進行校驗。這樣容易導致利用SSL支持方式竊取到密碼。雙向HTTPS認證會在服務器及用戶端處均進行認證,這樣可避免傳輸過程中以SSL剝離的方式對內(nèi)容進行抓取。

業(yè)務邏輯2.用戶名和密碼可被爆力破解用戶授權(quán)管理及安全性分析用戶登錄階段安全情況

爆力破解就是利用數(shù)學領域的窮舉法實現(xiàn)對信息的破解。這種方式聽起來沒有太多技術含量,但是針對很多老的Web系統(tǒng)依然有效。

窮舉法是一種針對密碼的破譯方法,簡單來說就是將密碼進行逐個推算直到找出真正的密碼為止。

針對爆力破解問題,有效的解決手段有:限制用戶名/密碼驗證速度。連續(xù)三次輸入錯誤后采用驗證碼等手段進行限制。提升用戶密碼強度及位數(shù)。定期修改密碼。業(yè)務邏輯3.萬能密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況

萬能密碼的關鍵是構(gòu)造使用or的數(shù)據(jù)庫查詢語句,并添加恒等式,實現(xiàn)數(shù)據(jù)庫對用戶輸入的密碼查詢結(jié)果永遠正確。

例如:后臺針對用戶名及密碼的查詢語句如下:

select*fromuserinfowherename=‘xx’andpassword=‘xx’;

假設用戶輸入的用戶名為admin,密碼為‘or‘1’=‘1,當提交到后臺,服務器發(fā)送至數(shù)據(jù)庫的查詢語句變?yōu)椋?/p>

select*fromuserinfowherename=‘a(chǎn)dmin’andpassword=‘’or‘1’=‘1’

當然,也可以輸入用戶名為admin’--,密碼隨意,數(shù)據(jù)庫查詢語句為:

select*fromuserinfowherename=‘a(chǎn)dmin’--

andpassword=‘’業(yè)務邏輯3.萬能密碼用戶授權(quán)管理及安全性分析用戶登錄階段安全情況

針對萬能密碼的防護措施為:

限制用戶名及密碼可使用的字符,不符合要求的直接過濾,避免單引號、數(shù)據(jù)庫注釋符等SQL注入行為發(fā)生。

在PHP+MySQL環(huán)境下,推薦采用mysql_real_escape_string()函數(shù)實現(xiàn)對輸入數(shù)據(jù)的過濾,該函數(shù)轉(zhuǎn)義SQL語句中使用的字符串中的特殊字符。

開啟此功能后,受影響的字符包括:\x00

\n

\r

\

’“\x1a

當遇到這些字符后,函數(shù)將對其進行轉(zhuǎn)義??梢杂行Х雷o萬能密碼攻擊。業(yè)務邏輯用戶授權(quán)管理及安全性分析用戶登錄階段安全情況登錄過程登錄暴力破解服務器會單獨提示用戶名或者密碼是錯誤的。從此類反應可遍歷用戶名,找出哪些為系統(tǒng)真實用戶的賬號。用戶名密碼錯誤單獨提示1)驗證碼綁定Session,只要Session不刷新,驗證碼一直不變2)直接識別驗證碼3)控制驗證碼生成方式4)修改http參數(shù),嘗試繞過鎖定策略測試方法:利用burpsuite對登錄包進行重放,觀察返回數(shù)據(jù)萬能密碼萬能密碼本質(zhì)上就是對用戶登錄的SQL注入攻擊,最常見的萬能密碼為:’or‘1’=‘1測試方法:構(gòu)造SQL語句,利用數(shù)據(jù)庫or語句實現(xiàn)對原有認證語句功能的修改,查詢正確的效果取消單獨提醒,只返回登錄成功或失敗限制IP登錄次數(shù),提升驗證碼強度過濾關鍵詞,防止SQL注入流程業(yè)務邏輯用戶授權(quán)管理及安全性分析密碼找回階段安全情況

密碼找回是用戶管理組件中的重要部分,通過自助方式讓用戶便捷地找回已忘記的密碼,恢復身份。

密碼找回的流程為輸入需找回密碼的賬戶名稱驗證用戶身份驗證通過重置用戶密碼重置密碼完成業(yè)務邏輯1.驗證步驟可跳過用戶授權(quán)管理及安全性分析密碼找回階段安全情況

驗證步驟可跳過問題是指在Web應用在沒有確認當前用戶身份或身份驗證失敗的情況下依舊提供了進入下一步的接口。

解決這個問題的主要方式還是要從用戶業(yè)務流程方面著手。常規(guī)的措施是對需要多級的業(yè)務流程,將當前的業(yè)務流程進行編號,并保存在token中。用戶每次提交業(yè)務請求時,與保存的token進行匹配,即可識別當前的用戶狀態(tài)。業(yè)務邏輯2.平行越權(quán)用戶授權(quán)管理及安全性分析密碼找回階段安全情況

當手機或郵箱沒有與驗證數(shù)據(jù)綁定,或者綁定后下一步?jīng)]進行驗證,就會導致攻擊者可以通過替換用戶信息實現(xiàn)平行越權(quán)。這個過程聽起來很離奇,但現(xiàn)實中確實存在此類安全隱患。這主要是在業(yè)務系統(tǒng)對手機或郵箱發(fā)送驗證碼階段,錯誤地采用了用戶端提交的參數(shù)。然后按照這些參數(shù)進行驗證碼的發(fā)送,從而導致此問題的出現(xiàn)。

出現(xiàn)越權(quán)的主要原因是,后臺業(yè)務邏輯錯誤地信任了來自前臺的用戶信息。由于前臺參數(shù)均為用戶可控,從而為修改這類權(quán)限信息帶來了機會。修改時需要從業(yè)務單元下手,任何有關用戶的敏感數(shù)據(jù)均從數(shù)據(jù)庫取得,并驗證用戶Session是否為本人,可有效解決這類問題。業(yè)務邏輯3.驗證過于簡單用戶授權(quán)管理及安全性分析密碼找回階段安全情況

短信或圖像驗證碼在Web業(yè)務中非常常見,其中以四位或六位數(shù)字驗證碼為主。這里有一個細節(jié),驗證碼在發(fā)給用戶識別到用戶提交結(jié)果之間,用戶并不能馬上提交驗證碼,需要一段反應時間(如短信延遲等情況),因此這段反應時間非常關鍵。有一些存在安全隱患的驗證碼功能在這段時間內(nèi)不失效,這就給了攻擊者爆破驗證碼的機會。這樣的漏洞比較常見,主要是對驗證碼的提交次數(shù)沒有做到完整的限制。業(yè)務邏輯3.驗證過于簡單用戶授權(quán)管理及安全性分析密碼找回階段安全情況

針對驗證碼的修復方式主要有三點,建議均啟用:限制驗證碼的驗證次數(shù),如5次,之后無論對錯此驗證碼均需失效限制驗證碼提交頻率,控制在1秒以上限制驗證碼的有效時間,如5分鐘。業(yè)務邏輯4.弱token用戶授權(quán)管理及安全性分析密碼找回階段安全情況token作為一種有效的令牌技術,可保證用戶不會重復利用某項功能,常用于利用郵箱找回密碼的功能中。如果用戶選擇利用郵箱找回密碼,則郵箱會收到網(wǎng)站自動發(fā)送的郵件,其中包含重置密碼鏈接,該重置鏈接里就有token。

如果后臺在生成token的邏輯方面比較薄弱,如使用時間戳加用戶名或者弱偽隨機數(shù)等信息,極易導致生產(chǎn)的token經(jīng)過幾次簡單的嘗試就可以破解。因此,有效的解決方式就是提升token的復雜性,即可解決這類問題。01用戶管理功能的實現(xiàn)02用戶授權(quán)管理及安全分析03用戶身份識別技術及安全防護04目錄CONTENTS業(yè)務邏輯安全風險存在的前提業(yè)務邏輯用戶身份識別技術及安全防護

在實際Web應用中,為了避免出現(xiàn)惡意注冊大量用戶賬號的情況,會采用額外的驗證技術,以區(qū)分當前的注冊請求是正常用戶行為還是機器惡意注冊。這個過程就是所謂的“圖靈測試”。利用這類手段可以有效杜絕批量注冊用戶賬號等行為,為網(wǎng)站的正常應用提供有效保障。

許多O2O公司在做業(yè)務推廣時,會采用給新注冊賬號贈現(xiàn)金、代金券等方式吸引客戶。于是,很多“羊毛黨”會利用機器注冊大量賬號,從而獲取O2O公司提供的新用戶獎勵。在業(yè)務開展中,避免機器自動化的注冊行為尤為關鍵,也就是如何有效區(qū)分人和機器。國內(nèi)目前也有相關業(yè)務安全風險解決公司提供整體解決方案。業(yè)務邏輯驗證碼技術驗證碼(CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart,CAPTCHA),即全自動區(qū)分計算機和人類的圖靈測試,是一種區(qū)分用戶是計算機還是人的公共全自動程序。利用驗證碼可以防止惡意破解密碼、刷票、論壇灌水,有效防止黑客用特定程序?qū)δ骋粋€注冊用戶進行暴力破解。實際上,驗證碼是現(xiàn)在很多網(wǎng)站常用的方式,它的實現(xiàn)方式比較簡單,

即由計算機生成問題并評判,但是只有人類才能解答。因為計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。用戶身份識別技術及安全防護業(yè)務邏輯驗證碼技術在日常應用中,用戶也常常抱怨驗證碼難用,這主要表現(xiàn)在驗證碼過難,人工無法正確識別。

有時甚至人和機器均無法識別。開發(fā)者也有他們的顧慮和無奈:設計過于簡單,驗證碼起不到任何作用,無法防止計算機的自動行為;設計過難,用戶體驗會極大下降。用此,選用何種驗證碼、

以何種方式供用戶識別,需在全面考慮Web應用的實際安全需求之后加以確定。用戶身份識別技術及安全防護業(yè)務邏輯驗證碼技術驗證碼主要用于防止攻擊者利用自動程序?qū)崿F(xiàn)對目標系統(tǒng)的大量重復識別。因此,驗證碼在設計階段的核心思路就是:盡量讓人類容易識別,并且盡量讓目前的各類信息處理技術(如圖像識別、音頻識別等)有效識別內(nèi)容。現(xiàn)在,人類的視覺、聽覺、動作的識別及處理非常容易,但針對計算機來說則非常困難。

驗證碼的主要技術有:提升難度至機器無法自動識別采取其他內(nèi)容識別方式,避免機器模擬這類行為根據(jù)事件及特定信息做推論用戶身份識別技術及安全防護1.驗證碼的發(fā)展思路業(yè)務邏輯驗證碼技術目前的圖像識別技術可直接識別指紋、虹膜、車牌號等關鍵信息,因此識別基本的驗證碼內(nèi)容不在話下。技術重點在于如何對圖像內(nèi)容進行快速識別,現(xiàn)在已有安全檢測工具支持針對驗證碼的自動識別。

標準的驗證碼識別流程為:獲取驗證碼圖片地址,并將驗證碼圖片保存至本地將驗證碼進行分塊切割,保證每塊內(nèi)容包含一個字符(數(shù)字或字母)根據(jù)各類字符的特征,進行對比,確認內(nèi)容。用戶身份識別技術及安全防護2.驗證碼識別技術的發(fā)展業(yè)務邏輯驗證碼帶來的問題驗證碼雖然可有效防止攻擊者對網(wǎng)站開展自動化的重復行為,但如果驗證碼過于簡單,則會被直接識別,無法起到防護作用,因此需要修改驗證碼的難度。如果驗證碼在使用階段出現(xiàn)問題,那么帶來的影響很可能是當前驗證功能失效等,從而影響當前業(yè)務的順利開展。

驗證碼存在的問題主要有以下幾個方面:用戶身份識別技術及安全防護業(yè)務邏輯驗證碼帶來的問題一般來說,用戶在進行一次提交時,驗證碼也會隨之提交。在正常業(yè)務中,有兩種提交方式:用戶點擊“提交”,瀏覽器先將用戶輸入的驗證碼發(fā)送至服務器進行校驗。如校驗正確,則發(fā)送用戶信息到服務器。驗證碼隨用戶信息一同提交,并且驗證碼綁定Session。如果Session不刷新,則驗證碼持續(xù)可用。用戶身份識別技術及安全防護1.驗證碼不刷新業(yè)務邏輯驗證碼帶來的問題驗證碼不刷新不可怕,但是在特定場景下(常見于用戶登錄功能開展時),驗證碼與上次提交時相比,沒有任何變化,這會直接導致驗證碼徹底失效。

另一種情況下,以手機短信接收到的驗證碼為例,如果驗證碼有效期過長或者沒有設定失敗多少次后重置,那么帶來的問題就會非常嚴重,因為驗證碼可被直接爆力破解,進而導致當前驗證碼的防護功能徹底失效。用戶身份識別技術及安全防護1.驗證碼不刷新業(yè)務邏輯驗證碼帶來的問題極少數(shù)情況下,在前臺JS腳本中會隨機生成特定字符,并傳至后臺。后臺根據(jù)前臺JS隨機生成的字符再生成對應的驗證碼。

如果前臺生成字符可控,則后臺生成驗證碼也就可以被控制,因為關鍵的字符是不變的。

雖然此類情況極其少見,但仍需Web開發(fā)者及安全人員注意。處理這類問題的核心思路在于:不要相信用戶端自動生成的數(shù)據(jù),并且不要將涉及業(yè)務流程的函數(shù)與前臺用戶進行關聯(lián)。用戶身份識別技術及安全防護2.驗證碼生成可控業(yè)務邏輯驗證碼帶來的問題驗證碼雖然由服務器端進行生成,但是卻由前臺(用戶瀏覽器)進行驗證。通常利用JS腳本進行前臺對比。這有點“自欺欺人”的感覺,因為用戶瀏覽器完全可被攻擊者控制,確定發(fā)送什么數(shù)據(jù)包。因此,在業(yè)務流程上此類問題為嚴重的漏洞。

解決此類問題的核心仍然是不要讓客戶參與到整體業(yè)務流程控制中。

Web應用流程在設計階段就要充分注意:不要采用任何來自用戶端自行判斷的結(jié)果。用戶身份識別技術及安全防護3.驗證碼前臺對比業(yè)務邏輯二次驗證技術在開展關鍵業(yè)務方面,可能會利用二次驗證手段做進一步的用戶校驗,如各類手機驗證碼、郵箱確認鏈接等。這種使用場景在現(xiàn)實業(yè)務中普遍存在。用戶身份識別技術及安全防護業(yè)務邏輯二次驗證技術通常,業(yè)務系統(tǒng)在某一個關鍵點會以短信方式向當前用戶綁定的手機發(fā)送一個隨機碼,隨機碼一般為4~6位的隨機數(shù)??蛻糨斎腚S機碼后才可執(zhí)行后續(xù)業(yè)務。

這類驗證方式在很多業(yè)務場景中使用,原理是攻擊者無法獲取用戶的手機,也就無法獲取當前驗證碼,從而保證了安全性。但是需要注意,驗證碼生成規(guī)則或驗證均需由服務器執(zhí)行,避免被用戶控制導致驗證環(huán)節(jié)失效。用戶身份識別技術及安全防護1.短信隨機碼識別業(yè)務邏輯二次驗證技術通常,用戶在一個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論