
RESTful Web 服務 - 安全性
由於 RESTful Web 服務使用 HTTP URL 路徑,因此以與保護網站相同的方式保護 RESTful Web 服務非常重要。
以下是設計 RESTful Web 服務時應遵循的最佳實踐:
驗證 - 在伺服器上驗證所有輸入。保護您的伺服器免受 SQL 或 NoSQL 注入攻擊。
基於會話的身份驗證 - 使用基於會話的身份驗證來驗證每次向 Web 服務方法發出請求時的使用者。
URL 中不包含敏感資料 - 切勿在 URL 中使用使用者名稱、密碼或會話令牌,這些值應透過 POST 方法傳遞給 Web 服務。
限制方法執行 - 限制對 GET、POST 和 DELETE 方法等方法的使用。GET 方法不應能夠刪除資料。
驗證格式錯誤的 XML/JSON - 檢查傳遞給 Web 服務方法的輸入是否格式正確。
丟擲通用錯誤訊息 - Web 服務方法應使用 HTTP 錯誤訊息(例如 403 來顯示訪問被禁止等)。
HTTP 程式碼
序號 | HTTP 程式碼及說明 |
---|---|
1 |
200 OK - 表示成功。 |
2 |
201 CREATED - 當使用 POST 或 PUT 請求成功建立資源時。使用 location 頭返回新建立資源的連結。 |
3 |
204 NO CONTENT - 當響應正文為空時。例如,DELETE 請求。 |
4 |
304 NOT MODIFIED - 用於在條件 GET 請求的情況下減少網路頻寬使用。響應正文應為空。標頭應包含日期、位置等。 |
5 |
400 BAD REQUEST - 表示提供了無效輸入。例如,驗證錯誤、資料缺失。 |
6 |
401 UNAUTHORIZED - 表示使用者使用無效或錯誤的身份驗證令牌。 |
7 |
403 FORBIDDEN - 表示使用者無權訪問所使用方法。例如,無管理員許可權的刪除訪問。 |
8 |
404 NOT FOUND - 表示該方法不可用。 |
9 |
409 CONFLICT - 表示在執行方法時發生衝突情況。例如,新增重複條目。 |
10 |
500 INTERNAL SERVER ERROR - 表示伺服器在執行方法時丟擲了一些異常。 |