網(wǎng)上做任務(wù)的網(wǎng)站深圳小程序開(kāi)發(fā)公司
安全測(cè)試的概念
定義:指有關(guān)驗(yàn)證應(yīng)用程序的安全等級(jí)和識(shí)別潛在安全性缺陷的過(guò)程?!?/p>
- 應(yīng)用軟件的安全性測(cè)試:軟件自身設(shè)計(jì)中存在的安全隱患,并檢查軟件對(duì)非法入侵的防御能力。
- 系統(tǒng)級(jí)別的安全性測(cè)試:確保只有具備系統(tǒng)平臺(tái)訪問(wèn)權(quán)限的用戶才能訪問(wèn),包括對(duì)系統(tǒng)的登錄和遠(yuǎn)程訪問(wèn)。
導(dǎo)致軟件出現(xiàn)安全問(wèn)題的主要原因是:軟件的安全漏洞。
安全漏洞概念:
- 定義:硬件、軟件或協(xié)議在邏輯設(shè)計(jì)上或具體實(shí)現(xiàn)或系統(tǒng)安全策略上存在的缺陷或漏洞。
- 漏洞產(chǎn)生原因:程序員不正確或不安全的編碼導(dǎo)致的。
- 危害:攻擊者通過(guò)漏洞獲取系統(tǒng)額外權(quán)限,植入病毒、木馬,竊取資料。
????????注意:只有威脅到系統(tǒng)安全的錯(cuò)誤才算漏洞。
安全漏洞的危害:
- 系統(tǒng)完整性:非法篡改破壞數(shù)據(jù)完整性。
- 系統(tǒng)可用性:破壞系統(tǒng)或網(wǎng)絡(luò),導(dǎo)致服務(wù)不可用。
- 系統(tǒng)機(jī)密性:泄露個(gè)人或企業(yè)隱私信息。
- 系統(tǒng)可靠性:造成系統(tǒng)不能正常提供有效服務(wù)。
軟件安全測(cè)試方法
- 代碼安全性測(cè)試:對(duì)源代碼進(jìn)行安全掃描,根據(jù)程序中的數(shù)據(jù)流、控制流、語(yǔ)義等信息與其特有軟件安全規(guī)則庫(kù)進(jìn)行匹配,從中找出代碼中潛在的安全漏洞。
- 滲透測(cè)試:主要使用自動(dòng)化工具或人工模擬黑客輸入,對(duì)系統(tǒng)進(jìn)行攻擊性測(cè)試,從而找出運(yùn)行時(shí)刻說(shuō)存在的安全漏洞。
- 程序數(shù)據(jù)掃描:通常是內(nèi)存測(cè)試,可發(fā)現(xiàn)例如緩沖區(qū)溢出之類的漏洞。
軟件安全測(cè)試的內(nèi)容
- 功能驗(yàn)證:對(duì)涉及到安全的軟件功能進(jìn)行有效性驗(yàn)證,如:管理模塊、權(quán)限模塊、加密系統(tǒng)、認(rèn)證系統(tǒng)等。
- 模擬攻擊:一種特殊的、極端的測(cè)試方法,模擬攻擊驗(yàn)證軟件系統(tǒng)的安全防護(hù)能力。如:滲透測(cè)試---比較常用。
- 漏洞掃描:漏洞掃描器。
- 偵聽(tīng)技術(shù):網(wǎng)絡(luò)監(jiān)聽(tīng),獲取傳輸信息,當(dāng)發(fā)現(xiàn)有敏感信息時(shí),存在安全問(wèn)題。--網(wǎng)絡(luò)是否被監(jiān)聽(tīng)。
軟件安全測(cè)試的過(guò)程
基于安全需求,將系統(tǒng)可能面臨的安全問(wèn)題進(jìn)行分類,畫出威脅樹(shù),可針對(duì)威脅樹(shù)選擇對(duì)應(yīng)的方法和技術(shù),是為需求分析。
- 基于威脅模型,指定計(jì)劃
- 以口令安全問(wèn)題威脅樹(shù)為例,計(jì)劃就可為口令安全可能存在的各種攻擊進(jìn)行制定。
- 規(guī)劃最小測(cè)試單元
- 不是整個(gè)模塊都有安全問(wèn)題,關(guān)注有問(wèn)題的最小模塊即可。
- 對(duì)系統(tǒng)的可能漏洞進(jìn)行分級(jí)
- 按照不同優(yōu)先級(jí)進(jìn)行。
- 設(shè)計(jì)安全測(cè)試用例
- 根據(jù)漏洞類型,進(jìn)行準(zhǔn)備數(shù)據(jù),設(shè)計(jì)測(cè)試用例進(jìn)行測(cè)試。
- 模擬攻擊系統(tǒng)
- 模擬攻擊,查看系統(tǒng)狀態(tài)。
- 總結(jié)執(zhí)行結(jié)果,提出解決方案
WEB安全測(cè)試范圍
- web服務(wù)器應(yīng)用安全
- 服務(wù)器本身及網(wǎng)絡(luò)環(huán)境安全
- web服務(wù)器周邊應(yīng)用安全
- 網(wǎng)站程序安全
WEB安全測(cè)試的分類
- 認(rèn)證與授權(quán)
- Session與cookie:cookie校驗(yàn),敏感數(shù)據(jù)不存本地
- DDoS拒絕服務(wù)攻擊
- 文件上傳漏洞:缺少必要校驗(yàn):限制文件格式/大小限制/修改擴(kuò)展名是否可以繞過(guò)限制
- XSS跨站攻擊:惡意攻擊者往網(wǎng)頁(yè)中植入惡意的代碼,用戶執(zhí)行的時(shí)候觸發(fā)。
- SQL注入:利用網(wǎng)站的sql漏洞,達(dá)到惡意的目的。
0day & 1day
0day 又叫零時(shí)差攻擊,是指被發(fā)現(xiàn)后立即被惡意利用的安全漏洞。
- 0day:只有你自己知道
- 1day:剛剛公布的漏洞(沒(méi)超1天)
- nday:漏洞公布已經(jīng)n天
白帽子和黑帽子
白帽子:精通安全技術(shù),站在黑客對(duì)面的專家。。。。
黑帽子:黑客技術(shù)造成破壞,甚至犯罪團(tuán)伙。。。。
WEB安全測(cè)試載體
- 通常是網(wǎng)絡(luò)協(xié)議,常見(jiàn)的是http協(xié)議。
網(wǎng)絡(luò)協(xié)議基礎(chǔ)
網(wǎng)絡(luò)模型
- OSI模型
- 網(wǎng)絡(luò)模型協(xié)議對(duì)照
- 協(xié)議數(shù)據(jù)的網(wǎng)絡(luò)傳輸
- 包括2部分:拆解 和 封裝? ? ? ??
傳輸層TCP/UDP協(xié)議
- tcp協(xié)議:面向連接、可靠,基于字節(jié)流。
- 將應(yīng)用成接收到的數(shù)據(jù)進(jìn)行拆分--報(bào)文段
三次握手:確保連接的可靠性(全雙工,2端確認(rèn))
四次揮手:斷開(kāi)雙方的連接(雙工確認(rèn))
報(bào)文結(jié)構(gòu):
?端口:用于判斷某個(gè)應(yīng)用程序的標(biāo)識(shí)。?
網(wǎng)絡(luò)層IP協(xié)議
略。。。
應(yīng)用層HTTP協(xié)議
重要狀態(tài)碼:
200-->請(qǐng)求成功
3xx表示重定向:
- 301--->請(qǐng)求的資源永久的移到了新地址
- 302-->請(qǐng)求的資源臨時(shí)從不同的url響應(yīng)請(qǐng)求
- 304-->文檔內(nèi)容自上次請(qǐng)求以來(lái)沒(méi)有發(fā)生過(guò)改變,從緩存響應(yīng)請(qǐng)求
4xx表示客戶端錯(cuò)誤:
- 401 -->unauthorized,當(dāng)前請(qǐng)求需要用戶確認(rèn)
- 403-->forbidden,服務(wù)器已經(jīng)理解請(qǐng)求,但拒絕執(zhí)行它
- 404-->not found,請(qǐng)求所希望的到的資源未在服務(wù)器上面發(fā)現(xiàn)。如路徑或資源名錯(cuò)誤
5xx表示服務(wù)端錯(cuò)誤:
500-->服務(wù)器遇到了未曾預(yù)料的狀況,導(dǎo)致他無(wú)法完成對(duì)請(qǐng)求的處理,如:源碼錯(cuò)誤
消息摘要技術(shù)
消息摘要技術(shù)(Message Digest)是一種用于確保消息完整性和安全性的密碼學(xué)技術(shù)。它將輸入的任意長(zhǎng)度的消息數(shù)據(jù)轉(zhuǎn)換成固定長(zhǎng)度的摘要,通常表示為一串由數(shù)字和字母組成的哈希值。
常見(jiàn)的消息摘要算法包括MD5(Message Digest Algorithm 5)和SHA(Secure Hash Algorithm)系列,如SHA-1、SHA-256、SHA-512等。這些算法使用不同的數(shù)學(xué)函數(shù)和運(yùn)算來(lái)計(jì)算摘要,并滿足以下特點(diǎn):
- 不可逆性:無(wú)法通過(guò)摘要反推出原始消息的內(nèi)容。
- 唯一性:不同的消息很難生成相同的摘要,且即使輸入消息的微小變化也會(huì)顯著改變摘要的值。
- 固定長(zhǎng)度:摘要的長(zhǎng)度是固定的,不受輸入消息長(zhǎng)度的影響。
消息摘要技術(shù)在數(shù)據(jù)完整性校驗(yàn)、數(shù)字簽名、密碼存儲(chǔ)等場(chǎng)景中廣泛應(yīng)用。以下是一些常見(jiàn)的應(yīng)用場(chǎng)景:
-
數(shù)據(jù)完整性校驗(yàn):通過(guò)計(jì)算消息的摘要并與預(yù)期的摘要進(jìn)行比對(duì),可以驗(yàn)證消息在傳輸過(guò)程中是否被篡改或損壞。
-
數(shù)字簽名:發(fā)送方可以使用自己的私鑰對(duì)消息進(jìn)行摘要計(jì)算,并將摘要作為數(shù)字簽名附加到消息中。接收方可以使用發(fā)送方的公鑰驗(yàn)證數(shù)字簽名的有效性,以確保消息的完整性和來(lái)源認(rèn)證。
-
密碼存儲(chǔ):在用戶賬戶和密碼存儲(chǔ)時(shí),通常不會(huì)直接存儲(chǔ)明文密碼,而是將密碼經(jīng)過(guò)摘要計(jì)算后存儲(chǔ)摘要值。當(dāng)用戶登錄時(shí),輸入的密碼通過(guò)相同的摘要算法計(jì)算摘要,并與保存的摘要進(jìn)行比對(duì),以驗(yàn)證輸入密碼的正確性,而無(wú)需存儲(chǔ)明文密碼。
需要注意的是,隨著計(jì)算能力的提升,一些早期的消息摘要算法(例如MD5)已經(jīng)被證明存在碰撞攻擊等安全漏洞,因此在實(shí)際應(yīng)用中,更推薦使用更安全和強(qiáng)大的SHA-2系列或SHA-3系列的算法。此外,完整性校驗(yàn)僅能確認(rèn)數(shù)據(jù)是否被篡改,但無(wú)法提供機(jī)密性保護(hù),因此在需要同時(shí)滿足完整性和機(jī)密性的場(chǎng)景中,還需要結(jié)合其他密碼學(xué)技術(shù)來(lái)實(shí)現(xiàn)綜合的安全保護(hù)。
數(shù)字簽名技術(shù)
數(shù)字簽名技術(shù)是一種用于驗(yàn)證數(shù)字文件的完整性、源信任和抗否認(rèn)性的密碼學(xué)技術(shù)。它結(jié)合了公鑰加密和消息摘要技術(shù),確保消息在傳輸過(guò)程中不被篡改,并提供了對(duì)消息發(fā)送者身份的認(rèn)證。
數(shù)字簽名的工作原理如下:
-
創(chuàng)建簽名:發(fā)送方使用自己的私鑰對(duì)要發(fā)送的消息進(jìn)行加密或計(jì)算消息摘要。然后,發(fā)送方將加密后的消息或摘要與消息一起發(fā)送給接收方。
-
驗(yàn)證簽名:接收方使用發(fā)送方的公鑰對(duì)接收到的消息進(jìn)行解密或計(jì)算消息的摘要。然后,接收方將得到的結(jié)果與發(fā)送方發(fā)送的簽名進(jìn)行比對(duì)。
如果接收方成功驗(yàn)證了簽名,并且消息的完整性未被破壞,則可以確認(rèn)以下事實(shí):
-
消息的完整性:由于私鑰只有發(fā)送方擁有,因此無(wú)法通過(guò)偽造簽名來(lái)修改或篡改消息內(nèi)容。如果消息被篡改,驗(yàn)證過(guò)程將失敗,提示消息已被更改。
-
消息的源信任:由于只有發(fā)送方擁有與其公鑰匹配的私鑰,所以只有發(fā)送方才能生成有效的簽名。接收方可以使用發(fā)送方的公鑰驗(yàn)證簽名的有效性,從而確認(rèn)消息來(lái)自于發(fā)送方。
-
抗否認(rèn)性:由于數(shù)字簽名是與發(fā)送方的身份關(guān)聯(lián)的,發(fā)送方無(wú)法否認(rèn)已經(jīng)使用其私鑰生成的簽名。這提供了對(duì)消息的抗否認(rèn)特性,即發(fā)送方不能否認(rèn)發(fā)送過(guò)的消息。
數(shù)字簽名技術(shù)在許多領(lǐng)域廣泛應(yīng)用,例如:
-
數(shù)字證書:數(shù)字證書是數(shù)字簽名的一種重要應(yīng)用。它由證書頒發(fā)機(jī)構(gòu)(Certificate Authority)使用自己的私鑰對(duì)某個(gè)實(shí)體(如網(wǎng)站、組織或個(gè)人)的公鑰進(jìn)行簽名,確認(rèn)公鑰的所有權(quán)和真實(shí)性。這樣,其他人可以使用證書頒發(fā)機(jī)構(gòu)的公鑰驗(yàn)證數(shù)字證書的有效性,并信任證書中附帶的公鑰。
-
數(shù)字文檔的完整性和身份驗(yàn)證:數(shù)字簽名可用于保護(hù)文件的完整性,確保在傳輸或存儲(chǔ)過(guò)程中沒(méi)有被篡改。同時(shí),接收方可以通過(guò)驗(yàn)證簽名來(lái)驗(yàn)證文件的來(lái)源和身份,以確保其真實(shí)性和可信度。
-
電子商務(wù):數(shù)字簽名能夠確保在線交易的安全性和可信度。通過(guò)對(duì)交易數(shù)據(jù)進(jìn)行數(shù)字簽名,買家和賣家可以相互驗(yàn)證對(duì)方的身份以及交易的完整性。
需要注意的是,數(shù)字簽名技術(shù)依賴于安全的密鑰管理和使用合適的密碼學(xué)算法。保護(hù)私鑰的安全性至關(guān)重要,以防止私鑰泄露和未經(jīng)授權(quán)的簽名操作。同時(shí),為了保持對(duì)抗量子計(jì)算攻擊的能力,應(yīng)選擇適用于量子安全的密碼學(xué)算法,如使用基于橢圓曲線的數(shù)字簽名算法(ECDSA)或RSA的1024位以上密鑰長(zhǎng)度。?
會(huì)話安全管理技術(shù)
cookie狀態(tài)保持:使用cookie技術(shù)來(lái)保持登錄狀態(tài)。
cookie + session技術(shù) :
session是將數(shù)據(jù)存儲(chǔ)到服務(wù)器中,服務(wù)器會(huì)為每一個(gè)用戶創(chuàng)建一個(gè)session,用戶訪問(wèn)服務(wù)器的時(shí)候需要拿著session去表明身份,session的實(shí)現(xiàn)是基于cookie,session需要借助于cookie來(lái)存儲(chǔ)sessionid 。
使用session技術(shù)實(shí)現(xiàn)狀態(tài)保持?
- session是保存在服務(wù)器端
- cookie是保存在客戶端
token技術(shù):
token在計(jì)算機(jī)身份認(rèn)證中是令牌(臨時(shí))的意思,主要用于前后端分離、第三端登錄項(xiàng)目中。
- token是在服務(wù)端產(chǎn)生的
- 前端向服務(wù)端請(qǐng)求認(rèn)證,服務(wù)端認(rèn)證成功,會(huì)返回token給客戶端。
- 前端在每次請(qǐng)求的時(shí)候帶上token證明自己的合法地位。
session依賴于cookie(瀏覽器),token可以不依賴于cookie(非瀏覽器)。
token技術(shù)進(jìn)行狀態(tài)保持原理:
token技術(shù)---jwt :