<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          開發(fā)安全的 API 所需要核對的清單

          共 3036字,需瀏覽 7分鐘

           ·

          2024-03-20 01:30

          原文:https://github.com/shieldfy/API-Security-Checklist/blob/master/README-zh.md,個人覺得非常有用,轉(zhuǎn)載這里幫助開發(fā)者們開發(fā)出安全的 API。以下是正文:

          以下是當你在設(shè)計,測試以及發(fā)布你的 API 的時候所需要核對的重要安全措施。

          身份認證

          • [ ] 不要使用 Basic Auth ,請使用標準的認證協(xié)議(如 JWT[1],OAuth[2])。
          • [ ] 不要重新實現(xiàn) Authentication、token generatingpassword storing,請使用標準庫。
          • [ ] 限制密碼錯誤嘗試次數(shù),并且增加賬號凍結(jié)功能。
          • [ ] 加密所有的敏感數(shù)據(jù)。

          JWT(JSON Web Token)

          • [ ] 使用隨機復(fù)雜的密鑰(JWT Secret)以增加暴力破解的難度。
          • [ ] 不要在請求體中直接提取數(shù)據(jù),要對數(shù)據(jù)進行加密(HS256RS256)。
          • [ ] 使 token 的過期時間盡量的短(TTL,RTTL)。
          • [ ] 不要在 JWT 的請求體中存放敏感數(shù)據(jù),因為它是可解碼的[3]。
          • [ ] 避免存儲過多的數(shù)據(jù)。JWT 通常在標頭中共享,并且它們有大小限制。

          訪問

          • [ ] 限制流量來防止 DDoS 攻擊和暴力攻擊。
          • [ ] 在服務(wù)端使用 HTTPS 協(xié)議來防止 MITM (中間人攻擊)。
          • [ ] 使用 HSTS 協(xié)議防止 SSL Strip 攻擊。
          • [ ] 關(guān)閉目錄列表。
          • [ ] 對于私有 API,僅允許從列入白名單的 IP/主機進行訪問。

          Authorization

          OAuth 授權(quán)或認證協(xié)議

          • [ ] 始終在后臺驗證 redirect_uri,只允許白名單的 URL。
          • [ ] 始終在授權(quán)時使用有效期較短的授權(quán)碼(code)而不是令牌(access_token)(不允許 response_type=token)。
          • [ ] 使用隨機哈希數(shù)的 state 參數(shù)來防止跨站請求偽造(CSRF)。
          • [ ] 對不同的應(yīng)用分別定義默認的作用域和各自有效的作用域參數(shù)。

          輸入

          • [ ] 使用與操作相符的 HTTP 操作函數(shù),GET(讀取),POST(創(chuàng)建),PUT(替換/更新) 以及 DELETE(刪除記錄),如果請求的方法不適用于請求的資源則返回 405 Method Not Allowed。
          • [ ] 在請求頭中的 content-type 字段使用內(nèi)容驗證來只允許支持的格式(如 application/xmlapplication/json 等等)并在不滿足條件的時候返回 406 Not Acceptable。
          • [ ] 驗證 content-type 中申明的編碼和你收到正文編碼一致(如 application/x-www-form-urlencoded,multipart/form-dataapplication/json 等等)。
          • [ ] 驗證用戶輸入來避免一些普通的易受攻擊缺陷(如 XSSSQL-注入,遠程代碼執(zhí)行 等等)。
          • [ ] 不要在 URL 中使用任何敏感的數(shù)據(jù)(credentialsPasswords,security tokens,or API keys),而是使用標準的認證請求頭。
          • [ ] 僅使用服務(wù)器端加密。
          • [ ] 使用一個 API Gateway 服務(wù)來啟用緩存、限制訪問速率(如 QuotaSpike 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 在后臺處理來避免阻塞請求,從而快速響應(yīng)客戶端。
          • [ ] 不要忘了把 DEBUG 模式關(guān)掉。
          • [ ] 可用時使用不可執(zhí)行的堆棧。

          輸出

          • [ ] 增加請求返回頭 X-Content-Type-Options: nosniff。
          • [ ] 增加請求返回頭 X-Frame-Options: deny。
          • [ ] 增加請求返回頭 Content-Security-Policy: default-src 'none'。
          • [ ] 刪除請求返回中的指紋頭 - X-Powered-By,ServerX-AspNet-Version 等等。
          • [ ] 在響應(yīng)中遵循請求的 content-type,如果你的請求類型是 application/json 那么你返回的 content-type 就是 application/json
          • [ ] 不要返回敏感的數(shù)據(jù),如 credentialsPasswords,security tokens。
          • [ ] 給請求返回使用合理的 HTTP 響應(yīng)代碼。(如 200 OK400 Bad Request,401 Unauthorized,405 Method Not Allowed 等等)。

          持續(xù)集成和持續(xù)部署

          • [ ] 使用單元測試以及集成測試的覆蓋率來保障你的設(shè)計和實現(xiàn)。
          • [ ] 引入代碼審查流程,禁止私自合并代碼。
          • [ ] 在推送到生產(chǎn)環(huán)境之前確保服務(wù)的所有組件都用殺毒軟件靜態(tài)地掃描過,包括第三方庫和其它依賴。
          • [ ] 對您的代碼持續(xù)運行安全測試(靜態(tài)/動態(tài)分析)。
          • [ ] 檢查您的依賴項(軟件和操作系統(tǒng))是否存在已知漏洞。
          • [ ] 為部署設(shè)計一個回滾方案。

          監(jiān)控

          • [ ] 對所有服務(wù)和組件使用集中式登錄。
          • [ ] 使用代理來監(jiān)控所有流量、錯誤、請求和響應(yīng)。
          • [ ] 使用短信,Slack,電子郵件,電報,Kibana, Cloudwatch等提醒。
          • [ ] 確保你沒有記錄任何敏感數(shù)據(jù),如信用卡、密碼、pin等。
          • [ ] 使用IDS和/或IPS系統(tǒng)監(jiān)視您的API請求和實例。

          也可以看看

          • yosriady/api-development-tools[4] - 用于構(gòu)建 RESTful HTTP + JSON API 的有用資源集合。

          參考資料

          [1]

          https://jwt.io/

          [2]

          https://oauth.net/

          [3]

          https://jwt.io/#debugger-io

          [4]

          https://github.com/yosriady/api-development-tools


          瀏覽 119
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷六月色播 | 97中文字幕第二十二页 | 日本女人毛片全网推荐免费看 | 东京热不卡无码视频 | 日韩黄色链接 |