XSS, 即爲(Cross Site Scripting), 中文名爲跨站腳本, 是發生在目標用戶的瀏覽器層面上的,當渲染DOM樹的過程成發生了不在預期內執行的JS代碼時,就發生了XSS攻擊。html
跨站腳本的重點不在‘跨站’上,而在於‘腳本’上。大多數XSS攻擊的主要方式是嵌入一段遠程或者第三方域上的JS代碼。其實是在目標網站的做用域下執行了這段js代碼。前端
1.盜用cookie 獲取敏感信息git
2.破壞頁面結構 插入惡意內容(反射性)github
3.利用flash(瞭解)web
4.DDOS(強大 難以防護)數據庫
DDOS:分佈式拒絕服務攻擊(Distributed Denial of Service),簡單說就是發送大量請求是使服務器癱瘓。DDos攻擊是在DOS攻擊基礎上的,能夠通俗理解,dos是單挑,而ddos是羣毆,由於現代技術的發展,dos攻擊的殺傷力下降,因此出現了DDOS,攻擊者藉助公共網絡,將大數量的計算機設備聯合起來,向一個或多個目標進行攻擊。express
在技術角度上,DDoS攻擊能夠針對網絡通信協議的各層,手段大體有:TCP類的SYN Flood、ACK Flood,UDP類的Fraggle、Trinoo,DNS Query Flood,ICMP Flood,Slowloris類等等。通常會根據攻擊目標的狀況,針對性的把技術手法混合,以達到最低的成本最難防護的目的,而且能夠進行合理的節奏控制,以及隱藏保護攻擊資源。npm
下面介紹一下TCP協議中的SYN攻擊。瀏覽器
常見的web攻擊總結:http://www.javashuo.com/article/p-sdrhzktr-gu.html安全
反射型
發出請求時,XSS代碼出如今URL中,做爲輸入提交到服務器端,服務器解析後響應,XSS代碼隨響應內容一塊兒傳回給瀏覽器,最後瀏覽器解析執行XSS代碼。這個過程想一次反射,故叫反射型XSS
存儲型(持久型XSS漏洞)
存儲型XSS和反射型XSS的差異僅在於,提交的代碼會存儲在服務器端(數據庫、內存、文件系統等),下次請求目標頁面時不用再提交XSS代碼
DOM XSS
DOM XSS攻擊不一樣於反射型XSS和存儲型XSS,DOM XSS代碼不須要服務器端的解析響應的直接參與,而是經過瀏覽器端的DOM解析。這徹底是客戶端的事情。
DOM XSS代碼的攻擊發生的可能在於咱們編寫JS代碼形成的。咱們知道eval語句有一個做用是將一段字符串轉換爲真正的JS語句,所以在JS中使用eval是很危險的事情,容易形成XSS攻擊。避免 使用eval語句。
構建Node服務進行演示
1.新建文件夾,命令行輸入:
express -e ./
使用express腳手架,用ejs做爲模板引擎,在當前目錄執行npm install
安裝依賴2.在routes/index.js下設置路由:
router.get('/', function(req, res, next) { res.set('X-XSS-Protection',0); //關掉瀏覽器對XSS的檢測 res.render('index',{ title:'Express',xss:req.query.xss }); }); //query是express獲取search的字段
3.在views/index.ejs中的body部分添加:
<div class=""> <%- xss %><!--'-'表示容許輸入html,不須要轉義--> </div>
4.命令行輸入:
npm start
開啓服務器
5.在http://localhost:3000/後輸入
?xss=<iframe src="//baidu.com/h.html"></iframe>
或者?xss=<img src="null" onerror="alert("1")">
或者?xss=<p onclick="alert("1")">點我</p>
進行模仿XSS的放射型攻擊。第一個效果以下圖:
對cookie保護
對重要的cookie設置httpOnly, 防止客戶端經過document.cookie
讀取cookie。服務端能夠設置此字段。
對用戶輸入的內容
1.編碼:對用戶輸入的數據進行HTML Entity編碼
2.解碼:
避免直接對HTML Entity編碼
使用DOM Parse轉碼,校訂不配對的DOM標籤
3.過濾:
移除用戶上傳的DOM屬性,如onerror,onclick等
移除用戶上傳的Style節點、Script節點、 iframe節點等
1.文本由服務器端轉義,客戶端反轉義,再DomParse,再過濾
2.使用encode.js和domparse.js第三方庫對文本進行解碼和DOM parse操做
項目連接:https://github.com/ickedesign/XSS_WebSecurity