簡介
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 攻擊。
尤雨溪:很多人就是不看文檔

