什麼是XSS攻擊
舉個例子,簡單說。
假如CSDN的文章評論有XSS漏洞。黑客在一篇正常的博客下面評論一段有危險腳本的評論,當你的瀏覽器打開這篇博客,並加載到那條有問題的評論時,會自動執行危險腳本,這個腳本會盜取你csdn當前的cookie等一些操作。
一次XSS漏洞修復經歷
週一上班,收到安全部門發來的一個工單,說我們的應用A存在XSS漏洞。但是我記得這個應用的XSS漏洞之前修復過。
仔細看了下漏洞復現,這次比較高級,他用了HTTP工具叫Burp Suite,我在另一篇博客中也轉載了Burp Suite的內容,地址:https://blog.csdn.net/qq1332479771/article/details/104798524。
先說一下應用A的正常操作流程:
- 用戶打開應用A的頁面時,會將一些數據填充到
form
表單的hidden
類型的input
框中; - 用戶在
form
表單中再勾選一些按鈕,輸入一段文本,然後提交這些信息; - 後端接收這個
form
數據,並將這些數據存入數據庫中。
以前,XSS漏洞發生在用戶的輸入文本中,用戶在自定義數據的文本框中輸入問題js腳本,便會導致在其他頁面展示時,執行問題js腳本。這個問題已經被修復。
這次,安全工程師在提交數據時,用HTTP工具修改了hidden
類型的input
中的字符串數據。而這個數據也是會在其他頁面展示的,便導致了這次的XSS漏洞。
如何處理
發現了問題原因處理起來便很簡單,hidden
類型input
框的數據是默認已知的,這些數據不在通過form
表單從前端獲取,而是在數據入庫時,通過再次調用接口補全這些數據。
對於XSS漏洞,寫代碼時應該注意的地方
所有通過HTTP接口獲取的字符串類型的數據,若需要再次展示在其他應用的其他頁面,均需要考慮XSS問題。
聯想到CSDN的自定義博客模塊功能
記得以前CSDN支持用戶自定義編輯博客模塊,裏面可以自定義任何內容,包括js
和iframe
,我當時自定義了一個Google搜索本站的功能,用的 iframe
組件,也有人將自己的微博嵌入進來。
後來CSDN不讓在裏面放JS,再後來到現在這個自定義博客模塊只對會員和專家開發放了。
用安全的眼光來看,以前是極其危險的。黑客在自己的博客的自定義專欄植入危險腳本,那麼所有訪問他博客的用戶均可以被他盜取cookie,或者被他利用執行DDos等操作。