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系統中,一些程式在安...