XSS-跨站腳本攻擊

XSS

Cross-Site Scripting(跨站腳本攻擊)簡稱 XSS,是一種代碼注入攻擊。攻擊者經過在目標網站上注入惡意腳本,使之在用戶的瀏覽器上運行。利用這些惡意腳本,攻擊者可獲取用戶的敏感信息如 Cookie、SessionID 等,進而危害數據安全。
爲了和 CSS 區分,這裏把攻擊的第一個字母改爲了 X,因而叫作 XSS。
XSS 的本質是:惡意代碼未通過濾,與網站正常的代碼混在一塊兒;瀏覽器沒法分辨哪些腳本是可信的,致使惡意腳本被執行。前端

反射型XSS攻擊

當瀏覽器請求 http://xxx/search?keyword="><script>alert('XSS');</script> 時,服務端會解析出請求參數 keyword,獲得 "><script>alert('XSS');</script>,拼接到 HTML 中返回給瀏覽器。造成了以下的 HTML:瀏覽器

<div>
  您搜索的關鍵詞是:"><script>sendToMe(document.cookie);</script>
</div>

這樣瀏覽器就會執行咱們注入的惡意代碼,咱們誘導他人訪問咱們構造的連接,就會把他人訪問頁面的部分信息發送給個人服務器安全

存儲型 XSS 攻擊

好比一個網站的文章能夠發表評論。
你登陸後獲取了cookie而後評論。
而後輸入評論內容: 2222<script>alert(XSS)</script>
惡意腳本未經轉換,存儲到了後臺。任何用戶訪問此頁面,都會執行惡意腳本。
致使每一個用戶在看這篇文章的時候就都彈出XSS彈框服務器

DOM 型XSS攻擊

客戶端的腳本程序能夠動態地檢查和修改頁面內容,而不依賴於服務器端的數據。可能引發dom型xss的:使用innerHTML, documen.write屬性...
DOM 型 XSS 跟前兩種 XSS 的區別:DOM 型 XSS 攻擊中,取出和執行惡意代碼由瀏覽器端完成,屬於前端 JavaScript 自身的安全漏洞,而其餘兩種 XSS 都屬於服務端的安全漏洞。cookie

<input type="text" id="input">
<button id="btn">Submit</button>
<div id="div"></div>
<script>
    const input = document.getElementById('input');
    const btn = document.getElementById('btn');
    const div = document.getElementById('div');

    let val;
     
    input.addEventListener('change', (e) => {
        val = e.target.value;
    }, false);

    btn.addEventListener('click', () => {
        div.innerHTML = `<a href=${val}>testLink</a>`
    }, false);
</script>

上面若是某個網站有這樣的代碼咱們能夠直接在輸入框輸入onclick=alert(/xss/)
提交以後,頁面代碼就變成了:
<a href onlick="alert(/xss/)">testLink</a>dom

如何防護XSS攻擊

http://www.javashuo.com/article/p-zwlxplgb-w.htmlxss

相關文章
相關標籤/搜索