iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
Modern Web

用 Node.js 打造後端 API系列 第 24

Day 24 - API安全性

  • 分享至 

  • xImage
  •  

前言


完成codingSchool API的功能後
如果直接將API部署上雲端的話
駭客可能會透過一些有害的query
對我們的資料庫進行攻擊
所以要來為API設置一些保護機制
要完成的功能有:

  • 防止NoSQL Injection
  • XSS Protection
  • Rate Limiting

NoSQL Injection


以下圖來說
email沒有經過驗證以確保它們是字符串
當JSON被deserialized時
這段query可能包含任何內容
在MongoDB中,字段$gt用作大於比較器
因此,當輸入的密碼配對到db中的密碼時
結果返回一個肯定的結果,即一個真實的陳述
https://ithelp.ithome.com.tw/upload/images/20221002/20151654NQc1QslyAU.png

為了解決這個問題
需要用到express-mongo-sanitize middleware
它可以移除object key中含有$的query

app.use(mongoSanitize());

XSS Protection


HelmetJS能確保server回傳給client的response
附上的header能保證網站安全

app.use(helmet());

https://ithelp.ithome.com.tw/upload/images/20221002/20151654H6XYm4Fk1Z.png

第二個要下載的package是xss-clean
當publisher在新增bootcamp時
他們可以任意地在json object插入html tag
如此一來會影響網頁的呈現&受到xss attack
一樣能透過安裝package來避免

app.use(xss());

上一篇
Day 23 - 登出系統
下一篇
Day 25 - API安全性2
系列文
用 Node.js 打造後端 API30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言