Web安全之XSS攻擊

前言

沒有絕對安全的網站,web常見的攻擊也是永遠繞不開的話題,今天簡單聊聊XSS。html

XSS攻擊

XSS 全稱是Cross Site Scripting(跨站腳本), 爲了與「CSS」區分開,故簡稱XSS。是指黑客往HTML文件中或者DOM中注入惡意腳本,從而再用戶瀏覽頁面時利用注入的惡意腳本對用戶實施攻擊的一種手段。前端

惡意腳本能夠作哪些事情web

  • 能夠竊取Cookie信息。惡意腳本能夠經過「document.cookie」獲取Cookie信息,而後經過XMLHttpRequest或者Fetch加上CORS功能將數據發送給惡意服務器;惡意服務器拿到用戶的Cookie信息以後,就能夠模擬用戶登陸,而後進行其餘操做了。
  • 能夠監聽用戶行爲,惡意腳本能夠使用「addEventListener"來監聽鍵盤事件,好比能夠獲取用戶輸入的我的信息,將其發送到惡意服務器,黑客掌握這些信息以後,又能夠進行其餘操做了。
  • 能夠經過修改DOM僞造假的登陸窗口,用來欺騙用戶輸入用戶名和密碼等我的信息
  • 還能夠再頁面內生成浮窗廣告,影響用戶體驗。

......數據庫

XSS類型
存儲型XSS攻擊

1.png

  • 首先黑客利用站點漏洞將一段惡意腳本代碼提交到網站的數據庫中;
  • 而後用戶向網站請求包含了惡意JS腳本的頁面
  • 當用戶瀏覽該頁面的時候,惡意腳本就會將用戶的Cookie等信息數據上傳到服務器
反射型XSS攻擊

在一個反射型XSS攻擊過程當中,惡意JS腳本屬於用戶發送給網站請求中的一部分,隨後網站又把惡意JS腳本返回給用戶,當惡意腳本再用戶頁面中被執行時,黑客就能夠利用該腳本作一些惡意操做。express

server.jssegmentfault

const express = require('express');
const router = express.Router();

router.get('/', (req, res, next) => {
    res.render('index', {
        title: 'Express',
        xss: req.query.xss,
    })
});

module.exports = router;

index.eje瀏覽器

<!DOCUMENT html>
<html>
<head>
    <title><%= title %> </title>
</head>
<body>
    <h1><%= title %></h1>
    <p>Weclome to <%= title %></p>
    <div> <%= xss %> </div>
</body>
</html>

在瀏覽器打開安全

http://localhost:3000/?xss=123

頁面正常展現
2.png
可是打開下面的連接服務器

http://localhost:3000/?xss=<script>alert('你被 xss 攻擊了')</script>

頁面以下
3.png
經過這個例子,能夠看出用戶將一段含有惡意JS腳本請求提交給Web服務器,Web服務器收到請求時,又將惡意代碼發送給瀏覽器,這就是反射型XSS攻擊。在現實生活中,黑客常常會經過Q羣或者郵件等方式誘導用戶去點擊這些惡意連接,因此平時不要亂點連接。cookie

與存儲型XSS攻擊的區別:Web服務器不會存儲反射型XSS攻擊的代碼。

基於DOM的XSS攻擊

基於DOM的XSS攻擊是不牽涉到頁面Web服務器的。黑客經過各類手段將惡意腳本注入到用戶頁面中,好比經過網絡劫持(Wifi路由器劫持、本地惡意軟件)在頁面傳輸過程當中修改HTML頁面的內容。

備註:https只能增長攻擊難度,不能防止全部場景的基於DOM的XSS攻擊

阻止XSS攻擊
  • 服務器對輸入腳本進行過濾或轉碼
  • 前端對輸入進行轉碼或者限制輸入
  • Cookie使用HttpOnly屬性
  • 添加驗證碼防止腳本冒充用戶提交危險操做
  • CSP

CSP有以下幾個功能:

  1. 限制加載其餘域下的資源文件,這樣即便黑客插入了一個JS文件,這個文件也是沒法被加載的
  2. 禁止向第三方域提交數據,這樣用戶數據也不會外泄
  3. 禁止執行內聯腳本和未受權腳本
  4. 還提供上報機制,這樣能夠幫助咱們儘快發現有哪些XSS攻擊,以便儘快修復問題。
最後

沒有絕對安全的系統,因此咱們只能儘可能作到知道原理,而後預防,提升攻擊難度。

技術自己是個好東西,可是好技術要用在對的地方纔能顯示出它的價值

個人其餘文章:
JS代碼運行過程簡述(一)

歡迎一塊兒快樂的挖坑、填坑。哈哈哈
qrcode_for_gh_1961e601cc53_258.jpg

相關文章
相關標籤/搜索