網路安全系列之網路攻擊方式和加密演算法

2021-08-20 03:33:33 字數 3623 閱讀 2171

1.1.1 xss簡介

xss攻擊的全稱是跨站指令碼攻擊(cross site scripting),為不跟層疊樣式表

(cascading style sheets,css)的縮寫混淆,故將跨站指令碼攻擊縮寫為xss

跨站指令碼攻擊也就是在**裡嵌入惡意指令碼程式,當使用者開啟**時,竊取cookie,盜取資訊

1.1.2 xss攻擊方式

1、uri引數傳遞

2、表單提交引數

1.1.3 解決方案1.2.1 csrf簡介

csrf全稱是跨站請求偽造(cross site request forgery),csrf偽裝受信任使用者,向第三方平台傳送惡意請求

案例:比如你曾經在瀏覽器訪問過銀行a的**,所以瀏覽器是有儲存cookie的,cookie並沒有過期,這時,你不小心登入乙個惡意的論壇**還是什麼**,你訪問了鏈結(其實鏈結後面加的是竊取cookie,調銀行a**轉賬api),這時候,如果**安全性驗證不過的話,就會竊取金錢的惡意操作

1.2.2 解決方案

1、設定cookie為httponly

2、新增token驗證

竟然cookie有被惡意竊取的可能性,那麼我們或許可以另闢新徑,我們可以在訪問請求時加上token,服務端再進行驗證,token驗證通過則可以訪問,否則限制訪問,當然這個token不可以放在cookie裡

3、新增referer識別

學習http協議的你可能知道,在http的請求頭里有個引數叫referer,這個引數其實就是記錄了請求的**位址

案例:針對剛才的銀行轉賬竊取案例,我們或許可以這樣改造,我們可以再增加乙個驗證的工程,不給直接呼叫轉賬介面,我們在這個驗證工程裡加入referer識別的。這時候,csrf攻擊的話,肯定得在非銀行a官網的伺服器傳送請求,我們改造之後,這個請求會先傳送到驗證工程這裡,這時候解析請求,獲取referer屬性進行識別,發現不是銀行a官網的位址,這時候直接攔截,拒絕訪問。

1.3.1 sql注入簡介

所謂sql注入攻擊就是將一些惡意sql執行指令偽裝成sql引數傳給dbms,然後執行惡意攻擊

1.3.2 解決方案

1、使用預編譯語句

學習jdbc都知道這個語句

statement st = (statement) conn.createstatement();
建立乙個statement物件,看起來是沒啥問題,可是對黑客來說這就是sql注入的乙個很好的**缺陷了

建立statement物件後,之後我們就是要執行sql,執行時候是這樣的,是將sql傳送給dbms編譯然後再執行的,statement沒有編譯的方法。不過preparedstatement就不一樣了,preparedstatement繼承statement介面,有預編譯的方法,編譯sql之後呢,在傳送給dbms執行

2、必要的加密

預防sql注入有時候是有必要進行一些加密措施的,比如使用者密碼這些重要資訊,我們可以md5加密一下,避免明文儲存。

1.4.1 ddos攻擊簡介

ddos(distributed denial of service),即分布式拒絕服務攻擊,ddos攻擊是基於dos發展來的。

什麼是dos呢?首先簡單介紹一下dos,dos就是利用信任的客戶端向服務端頻繁傳送請求,從而達到伺服器處理不過來,請求超時。所以dos其實就是一對一的,在郵件設施還不太好的情況是有效的,對於效能極佳的伺服器壓根不管用了,所以就有了ddos,分布式拒絕服務攻擊。

ddos攻擊過程大概是怎麼樣的呢?

竟然是分布式,首先黑客可能會通過程式控制大量的計算機,然後通過這個計算機群在同乙個時間,傳送大量的請求到目標伺服器,從而達到伺服器處理不過來,請求超時的情況。

1.4.2 ddos常用方式

下面簡單介紹一下兩種ddos攻擊的方式syn flood和dns query flood

【syn flood】

syn flood是ddos的一種攻擊方法,syn flood是網際網路最經典的攻擊方式之一。這個攻擊是通過tcp連線建立的,攻擊前先建立tcp連線,這個需要對tcp的三次握手和四次揮手協議有一定了解,其攻擊過程大概如圖,圖來自網際網路

dns query flood攻擊從名稱其實可以猜測出和dns有關的了,首先簡單介紹一下dns,dns(domain name system)是位於應用層的協議,負責網域名稱解析服務,dns通過網域名稱查詢ip位址,或逆向從ip位址反向查詢網域名稱。

然後dns query flood攻擊是怎麼做到的呢?

攻擊過程大致為:

通過程式控制,向目標伺服器的dns伺服器,傳送大量的網域名稱解析請求,不過這些網域名稱基本是隨機生成的,比如改下埠什麼的。

dns伺服器接收到網域名稱之後,先去快取裡查詢是否有這個網域名稱,然後發現沒有,之後,dns伺服器就會向上層的dns伺服器遞迴查詢了,指導向上查詢了全球13臺根dns伺服器。這時候肯定會出現網域名稱解析超時的情況。

2.1.1 數字摘要演算法簡介

所謂數字摘要其實就是通過乙個hash函式獲取指導長度的摘要字段,這段字段也可以叫做數字指紋,然後解密時,通過驗證摘要也即數字指紋。大概過程如圖

2.1.2 常用數字摘要演算法

md5:也即資訊摘要演算法5,message digest algorithm 5,是數字摘要演算法的一種實現,md5由md4、md3、md2改進而來,其摘要長度為128位

sha:sha也即安全雜湊演算法(secure hash algorithm),sha-1演算法生成的摘要資訊的長度為160位,由於生成的摘要資訊更長,運算的過程更加複雜

2.2.1對稱加密過程

對稱加密過程大致分為加解密過程,加密過程就是明文和金鑰通過特定加密演算法進行封裝之後,變成密文,傳送給資料接收方,資料接收方,同樣用相同的演算法的逆過程進行介面,用相同的金鑰去匹對。

2.2.2常見對稱加密演算法

des演算法全稱資料加密標準(data encryptin standard),屬於對稱加密演算法。

明文按64位進行分組,金鑰長64位,但事實上只有56位參與des運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個金鑰都有奇數個1),分組後的明文和56位的金鑰按位替代或交換的方法形成密文。

aes演算法全稱高階加密標準(advanced encryption standard),由des演算法發展而來,設計有三個金鑰長度:128,192,256位,比des演算法的加密強度更高,更為安全。

2.3.1 非對稱加密過程

非對稱加密演算法和對稱加密演算法類似,不過就是分為了公鑰和私鑰,加密過程可以用公鑰,也可以用私鑰,解密過程同理。

2.3.2 常見非對稱加密演算法

演算法設計基本來自簡單的數論事實:將兩個大素數相乘十分容易,但反過來想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。

網路安全系列之培訓筆記整理

邏輯漏洞 多個執行緒競爭同乙個共享 變數 檔案等稱之為條件競爭。那麼什麼情況存在競爭條件?例項 上傳檔案,下面是乙個上傳檔案的例子,上傳檔案之前先校驗許可權 include include include define delay 10000 int main fp fopen fn,a fwrit...

網路安全系列之三十 遠端檔案包含攻擊

遠端檔案包含攻擊remote file include,它也屬於是 注入 的一種,其原理就是注入一段使用者能控制的指令碼或 並讓服務端執行。檔案包含漏洞可能出現在jsp php asp等語言中,原理都是一樣的,本文只介紹php檔案包含漏洞。本次實驗需要使用2臺web伺服器,實驗環境如下 web1,i...

網路安全系列之十二 Linux使用者賬號安全設定

使用者賬號是計算機使用者的身份憑證或標識,每乙個要訪問系統資源的人,必須憑藉他的使用者賬號才能進入計算機。在linux系統中,提供了多種機制來確保使用者賬號的正當 安全使用。合理地規劃使用者賬號,並合理地分配許可權,是保證linux系統安全的第一步。1.清理系統賬號 在linux系統中,一些程式在安...