1. 程式人生 > >xss攻擊原理

xss攻擊原理

IT rip 編碼 coo html click 訪問 ID 定位

xss
  • 跨站腳本攻擊(cross site scripting):它是通過對網頁註入可執行代碼且成功地被瀏覽器執行,達到攻擊的目的,形成了一次有效XSS攻擊,一旦攻擊成功,它可以獲取用戶的聯系人列
    表,然後向聯系人發送虛假詐騙信息,可以刪除用戶的日誌等等,有時候還和其他攻擊方式同時實施比如SQL註入攻擊服務器和數據庫、Click劫持、相對鏈接劫持等實施釣魚,它帶來的危害是巨大的,是web安全的頭號大敵。
  • 執行條件:
    1. 需要向web頁面註入惡意代碼;
    2. 這些惡意代碼能夠被瀏覽器成功的執行。
  • XSS攻擊方式
    • XSS存儲型攻擊:惡意代碼被保存到目標網站的服務器中,這種攻擊具有較強的穩定性和持久性,比較常見場景是在博客,論壇等社交網站上,
    • XSS反射型攻擊:意代碼並沒有保存在目標網站,通過引誘用戶點擊一個鏈接到目標網站的惡意鏈接來實施攻擊的。
  • xss存儲型攻擊示例:用戶可以一html的方式上傳一次文章,如果黑客用戶在上傳文章時,在html裏加入了一些違規的js代碼,那麽其他用戶在訪問這篇文章時,瀏覽器會默認執行黑客上傳的js代碼,從而完成了對其他用戶攻擊
  • xss反射型攻擊方式:有時前端html頁面需要把get方式傳回來的字段顯示到頁面上,這時如果黑客在傳的字段後加上一段js代碼,則也是有可能被執行的。例如:

    http://www.xxx.com/?id=" /><script>alert(/xss/)</script><br x="
    //最終反射出來的HTML代碼:
    <div>
    <img src="/images/handler.ashx?id=" /><script>alert(/xss/)</script><br x="" />
    </div>
  • 攻擊類型很多,例如:
    • 盜取用戶賬號cookie
    • 流量劫持(通過訪問某段具有window.location.href定位到其他頁面)
  • 防禦方式:
    • 將前端提交的數據編碼轉義:一般表單提交的時候完全可以用strip_tags函數去除html標簽,如果涉及到富文本編輯器需要保留html標簽,可以用htmlspecialchars對提交數據進行過濾,從而轉換(& < > ’ ” )這幾個字符;還有可以利用htmlentities函數轉換所有的html標記
    • 對cookie的保護:對重要的cookie設置httpOnly, 防止客戶端通過document.cookie讀取cookie。服務端可以設置此字段。
    • 過濾掉所有可執行的js代碼:例如利用lexer方式

xss攻擊原理