共計 2072 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。
這期內(nèi)容當中丸趣 TV 小編將會給大家?guī)碛嘘P(guān)開發(fā)安全的 API 所需要核對的清單是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
以下是當你在設(shè)計, 測試以及發(fā)布你的 API 的時候所需要核對的重要安全措施.
身份認證
不要使用 Basic Auth 使用標準的認證協(xié)議 (比如 JWT, OAuth).
不要再造 Authentication, token generating, password storing 這些輪子, 使用標準的.
在登陸中使用 Max Retry 和自動封禁功能.
加密所有的敏感數(shù)據(jù).
JWT (JSON Web Token)
使用隨機復(fù)雜的密鑰 (JWT Secret) 以增加暴力破解的難度.
不要在請求體中直接提取數(shù)據(jù), 要對數(shù)據(jù)進行加密 (HS256 or RS256).
使 token 的過期時間盡量的短 (TTL, RTTL).
不要在 JWT 的請求體中存放敏感數(shù)據(jù), 它是可破解的.
OAuth 授權(quán)或認證協(xié)議
始終在后臺驗證 redirect_uri, 只允許白名單的 URL.
每次交換令牌的時候不要加 token (不允許 response_type=token).
使用 state 參數(shù)并填充隨機的哈希數(shù)來防止跨站請求偽造(CSRF).
對不同的應(yīng)用分別定義默認的作用于和各自有效的作用域參數(shù).
訪問
限制流量來防止 DDoS 攻擊和暴力攻擊.
在服務(wù)端使用 HTTPS 協(xié)議來防止 MITM 攻擊.
使用 HSTS 協(xié)議防止 SSLStrip 攻擊.
輸入
使用與操作相符的 HTTP 操作函數(shù), GET (讀取), POST (創(chuàng)建), PUT (替換 / 更新) 以及 DELETE (刪除記錄),如果請求的方法不適用于請求的資源則返回 405 Method Not Allowed.
在請求頭中的 content-type 字段使用內(nèi)容驗證來只允許支持的格式 (比如 application/xml, application/json …) 并在不滿足條件的時候返回 406 Not Acceptable.
驗證 content-type 的發(fā)布數(shù)據(jù)和你收到的一樣 (如 application/x-www-form-urlencoded, multipart/form-data, application/json 等等 …).
驗證用戶輸入來避免一些普通的易受攻擊缺陷 (比如 XSS, SQL- 注入, 遠程代碼執(zhí)行 等等 …).
不要在 URL 中使用任何敏感的數(shù)據(jù) (credentials, Passwords, security tokens, or API keys), 而是使用標準的認證請求頭.
使用一個 API Gateway 服務(wù)來啟用緩存、訪問速率限制 (如 Quota, Spike Arrest, Concurrent Rate Limit) 以及動態(tài)地部署 APIs resources.
處理
檢查是否所有的終端都在身份認證之后, 以避免被破壞了的認證體系.
避免使用特有的資源 id. 使用 /me/orders 替代 /user/654321/orders
使用 UUID 代替自增長的 id.
如果需要解析 XML 文件, 確保實體解析 (entity parsing) 是關(guān)閉的以避免 XXE 攻擊.
如果需要解析 XML 文件, 確保實體擴展 (entity expansion) 是關(guān)閉的以避免通過指數(shù)實體擴展攻擊實現(xiàn)的 Billion Laughs/XML bomb.
在文件上傳中使用 CDN.
如果需要處理大量的數(shù)據(jù), 使用 Workers 和 Queues 來快速響應(yīng), 從而避免 HTTP 阻塞.
不要忘了把 DEBUG 模式關(guān)掉.
輸出
發(fā)送 X-Content-Type-Options: nosniff 頭.
發(fā)送 X-Frame-Options: deny 頭.
發(fā)送 Content-Security-Policy: default-src none 頭.
刪除指紋頭 – X-Powered-By, Server, X-AspNet-Version 等等.
在響應(yīng)中強制使用 content-type, 如果你的類型是 application/json 那么你的 content-type 就是 application/json.
不要返回敏感的數(shù)據(jù), 如 credentials, Passwords, security tokens.
在操作結(jié)束時返回恰當?shù)臓顟B(tài)碼. (比如 200 OK, 400 Bad Request, 401 Unauthorized, 405 Method Not Allowed 等等 …).
持續(xù)集成和持續(xù)部署
使用單元測試和集成測試來審計你的設(shè)計和實現(xiàn).
使用代碼審查流程并且不要自行批準.
在推送到生產(chǎn)環(huán)境之前確保你的服務(wù)的所有組件都被用殺毒軟件靜態(tài)地掃描過,包括第三方庫和其它依賴.
為部署設(shè)計一個回滾方案.
上述就是丸趣 TV 小編為大家分享的開發(fā)安全的 API 所需要核對的清單是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。