2014Q1 工作心得 (2)

我們主要是透過 REST API 的方式,因此在上線之後可能會面臨資訊安全的問題,根據 REST Security Cheat Sheet 的分類主要可以分成五大類分別為驗證身份、授權使用、輸入驗證、輸出編碼和加密處理,因為我們主要是內容為主的 App,因此當我們會請編輯花費許多的時間確保內容品質,提供最高品質的資訊給使用者。

當編輯整理之後的資料非常有價值時,就會發生獨立開發者直接使用我們 API 進行同類型影音 App 的開發成為競爭者,直接對於我們造成直接的影響,我們為了解決此問題主要透過 nginx 的存取記錄,透過指令 cat [nginx log file] | cut -d’ ‘ -f1 | sort | uniq -c | sort -n 追蹤異常大量存取 API 的 IP 位址,嘗試透過 IP 和 User-agent 進行阻擋。

但是發現問題一樣存在,因此我們最後只好在犧牲不打算更新版本的 App 者進行 AES 256 bits 的加密處理,主要是將 Node.js 產生有價值的資訊透過 AES 256 bits 的加密之後再以 API 的方式回傳給 iOS 和 Android 的 App 進行有價值的資訊解密,呈現最完整的內容給使用者。