簡介
xss
是常見的攻擊方式之一,不管是前端還是後端都要對此有所防範才行。
本文主要講解使用 NodeJS
開發的後端程序應該如何防範 xss
攻擊。
xss演示
xss
攻擊方式主要是在在頁面展示內容中摻雜 js代碼
,以獲取網頁信息。
常見的攻擊地方有:
- 電商產品評價區:某用戶提交的評價帶有
可執行的js代碼
,其他用戶查看該評論時就會執行那段js代碼
。 - 博客網站:某用戶在博客的標題或者內容中帶有
可執行的js代碼
,其他用戶查看該博客時那段js代碼
就會被執行。
比如在輸入框輸入
|
|
別的用戶在自己頁面要展示上面這段內容個,頁面有可能會彈出一個彈窗。
這個例子只是彈出一個對話框,如果人家有惡意,獲取cookie 等信息,然後傳給自己的服務器,那後果真的很嚴重。
xss防禦
預防措施:轉義特殊字符
特殊符號轉換
|
|
上面我羅列了幾個常見的特殊字符。從上面的例子可以看出,輸入了 <script>
標籤後,裡面的內容有可能會被執行。
如果我們把 <script>
改成 <script>
那麼瀏覽器就不把這段內容看成是可執行代碼。
在日常開發中,我們不需要自己編寫轉義功能的代碼,只需要下載 xss
的依賴包就行。
安裝 xss
依賴包
|
|
使用 xss
。 xss
其實是一個方法,只需要把要轉義的內容傳入 xss
方法即可。
|
|
最後輸出
|
|
以上就是 xss攻擊
在後端的防禦方法。
如果嚴謹一點的話,在前端也可以把文本域的內容裡的特殊字符轉義一遍再傳給後端。
後端傳給前端的內容有可能會在頁面展示成 <script>alert(1234)</script>
,這部分需要前端自己去處理。
插則花邊新聞
之前看到有則新聞說 Vue
不安全,某些ZF項目中使用 Vue
受到了 xss
攻擊。後端甩鍋給前端,前端甩鍋給了 Vue
。
後來聽說是前端胡亂使用 v-html
渲染內容導致的,而 v-html
這東西官方文檔也提示了有可能受到 xss
攻擊。
尤雨溪:很多人就是不看文檔