【web安全】深入淺出XSS攻擊
在學習JS
的過程中,你一定聽說過CSRF
攻擊和XSS
攻擊。關於CSRF
攻擊,我已經在之前的文章中介紹過了,本文就來介紹一下XSS
攻擊。
XSS定義和原理
發出請求時,XSS
程式碼出現在url
中,作為輸入提交到服務端,服務端解析後響應,XSS
程式碼隨響應內容一起回傳給瀏覽器,最後瀏覽器解析並執行XSS
程式碼。
XSS防禦措施
一般xss防禦措施有三種:
- 編碼
- 過濾:原樣顯示使用者輸入內容時,要把不合法的內容過濾掉。
如dom屬性、style屬性、script節點、iframe節點等。 - 校正
使用dom parse轉換,校正dom標籤
XSS實戰
1. 構建一個express應用
對於沒有過node
開發經驗的同學,我這裡簡單介紹一下建立express
應用的步驟。
- 建立一個目錄
mkdir xss
- 利用
express
命令,在當前目錄下建立一個express
腳手架express -e ./
- 安裝所有依賴
npm install
- 啟動服務
npm start
- 訪問
localhost:3000
2. 修改腳手架程式碼,使得url中引數隨響應內容回傳給瀏覽器
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express', xss: req.query.xss});
});
module.exports = router;
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<div>
<%- xss %>
</div>
</body>
</html>
3. 引數中攜帶有攻擊性的指令碼
攜帶img
標籤:
http://localhost:3000/?xss=<img src="null" onerror="alert(123)"
你會發現alert
並沒有彈出來,並看到瀏覽器端報錯。
這是在響應頭裡預設加入了xss
防禦檢查標誌,瀏覽器做了xss
防禦保護。我們這裡先關閉。
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.set('X-XSS-Protection', 0)
res.render('index', { title: 'Express', xss: req.query.xss});
});
module.exports = router;
此時可以看到alert
彈窗就彈出來了。
此時,我們就成功進行了一次xss
攻擊。
demo地址
參考
為什麼要進行url
編碼?
HTTP
協議中引數的傳輸是“key
=value
”鍵值對的形式,如果要傳輸多個引數要用“&”符號進行分割。這樣伺服器在接收到這種字串的時候,會用“&”符號分割出每個引數,再用“=”分割出引數值。
現在有這樣一個問題:當引數中包含“=”或“&”等特殊字元時,伺服器解析字串就會出錯。所以,需要對特殊字元進行編碼。
相關文章
- Web 安全漏洞之 XSS 攻擊Web
- CSRF 攻擊深入淺出
- 前端安全 — 淺談JavaScript攔截XSS攻擊前端JavaScript
- 前端攻擊 XSS 深入解析前端
- Web安全之跨站指令碼攻擊(XSS)Web指令碼
- web安全之XSS攻擊原理及防範Web
- 滲透攻防Web篇-深入淺出SQL隱碼攻擊WebSQL
- Web安全系列(三):XSS 攻擊進階(挖掘漏洞)Web
- 詳解Web應用安全系列(2)注入漏洞之XSS攻擊Web
- 前端安全系列(一):如何防止XSS攻擊?前端
- 如何防止XSS攻擊
- 什麼是XSS攻擊?XSS攻擊有哪幾種型別?型別
- 不可忽視的前端安全問題——XSS攻擊前端
- Web安全-XSSWeb
- 深入淺出CPU眼中的函式呼叫&棧溢位攻擊函式
- 深入淺出 JSON Web TokenJSONWeb
- XSS攻擊有什麼特點?XSS攻擊分為幾個型別?型別
- XSS攻擊和CSRF攻擊有什麼區別?
- 什麼是XSS攻擊?其攻擊原理有哪些?
- Web 安全之 XSSWeb
- Web安全防範-----防止重放攻擊Web
- 常見Flash XSS攻擊方式
- XSS與SQL隱碼攻擊SQL
- 如何有效防禦XSS攻擊?網路安全學習教程
- WEB安全入門:如何防止 CSRF 攻擊?Web
- 網站安全公司對於網站XSS攻擊處理方案網站
- React 防注入攻擊 XSS攻擊 (放心大膽的用吧)React
- 常見網路攻擊:XSS 篇
- 寬位元組XSS跨站攻擊
- 前端面試查漏補缺--(七) XSS攻擊與CSRF攻擊前端面試
- web安全作業(SQL隱碼攻擊1)WebSQL
- web安全作業(SQL隱碼攻擊2)WebSQL
- web攻擊方式Web
- XSS跨站指令碼攻擊介紹指令碼
- JeecgBoot抵禦XSS攻擊實現方案boot
- 詳解Xss 及SpringBoot 防範Xss攻擊(附全部程式碼)Spring Boot
- 常用的XSS攻擊手段和目的有哪些?網路安全入門教程
- 網路安全——常見的幾種WEB攻擊:Web