Web安全之XSS攻擊與防禦小結

2021-09-13 02:12:51 字數 2105 閱讀 7363

web安全之xss攻防

1. xss的定義

跨站指令碼攻擊(cross site scripting),縮寫為xss。惡意攻擊者往web頁面裡插入惡意script**,當使用者瀏覽該頁之時,嵌入其中web裡面的script**會被執行,從而達到惡意攻擊使用者的目的。

2. xss的原理

3. xss的攻擊方式

(1)反射型: 發出請求時,xss**出現在url中,作為輸入提交到伺服器端,伺服器端解析後響應,xss隨響應內容一起返回給瀏覽器,最後瀏覽器解析執行xss**,這個過程就像一次發射,所以叫反射型xss。

(2)儲存型: 儲存型xss和反射型的xss差別就在於,儲存型的xss提交的**會儲存在伺服器端(資料庫,記憶體,檔案系統等),下次請求目標頁面時不用再提交xss**。

4. xss的防禦措施

(1)編碼:對使用者輸入的資料進行html entity編碼 

(2)過濾:移除使用者上傳的dom屬性,如onerror等,移除使用者上傳的style節點,script節點,iframe節點等。

(3)校正:避免直接對html entity編碼,使用dom prase轉換,校正不配對的dom標籤。

5. 應用示例

構建node應用,演示反射型xss攻擊。(linux作業系統中)

(1) 新建乙個資料夾xss: mkdir xss_test1

(2) 切換目錄到該資料夾下: cd xss

(3) 安裝express: express -e ./

(4) 構建應用依賴: npm install

(5) 開啟構建好的node應用,得到目錄:

(6) 開啟node服務:npm start

(8) 加入xss

修改xss_test1檔案routers目錄下的index.js檔案:

修改xss_test1檔案views目錄下的index.ejs檔案:

(9) 重啟node服務:npm start ,開啟瀏覽器

a. 在位址列輸入:localhost:3000/?xss=hello

執行結果得到:

執行結果得到:

說明: 如果**中沒有res.set('x-xss-protection', 0);則會發現沒有彈出框,這是因為瀏覽器自動設定了攔截xss,所以onerror事件並不會執行,而加上了:res.set('x-xss-protection', 0);才會出現彈框,這才完成了一次xss攻擊。

執行結果得到:

執行結果得到:

說明:這種攻擊就常用於廣告植入等。

Web安全之XSS攻擊與防禦小結

web安全之xss攻防 1.xss的定義 跨站指令碼攻擊 cross site scripting 縮寫為xss。惡意攻擊者往web頁面裡插入惡意script 當使用者瀏覽該頁之時,嵌入其中web裡面的script 會被執行,從而達到惡意攻擊使用者的目的。2.xss的原理 3.xss的攻擊方式 1 ...

web安全之xss攻擊

xss攻擊的全稱是cross site scripting xss 攻擊,是一種注入式攻擊。基本的做法是把惡意 注入到目標 由於瀏覽器在開啟目標 的時候並不知道哪些指令碼是惡意的,所以瀏覽器會無差別執行惡意指令碼,從而導致使用者資訊和一些敏感資訊被盜取和洩漏。xss一般分為兩種型別,持久化的xss和...

xss攻擊與防禦

cross site scripting跨站指令碼攻擊 利用js和dom攻擊。盜用cookie,獲取敏感資訊 破壞正常頁面結構,插入惡意內容 廣告.劫持前端邏輯 ddos攻擊效果 分布式拒絕服務攻擊 server limit dos,http header過長,server返回400 攻擊方式 發出...