正如RESTfulWeb服務(wù)以HTTP URL的路徑工作,所以這是非常重要的,在相同的方式維護一個RESTful Web服務(wù)的網(wǎng)站是安全的。以下是在設(shè)計一個RESTful Web服務(wù)應(yīng)遵循的最佳實踐。
驗證 - 驗證服務(wù)器上的所有輸入。防止SQL或NoSQL注入攻擊你的服務(wù)器。
基于會話的認證 - 使用基于會話的認證,每當一個請求到Web服務(wù)的方法來驗證用戶的身份。
URL沒有敏感數(shù)據(jù) - 千萬不要使用用戶名,密碼或會話令牌的URL,這些值應(yīng)通過POST方法傳遞給Web服務(wù)。
方法執(zhí)行限制 - 允許限制使用像GET,POST,DELETE等方法。 GET方法不應(yīng)該用于刪除數(shù)據(jù)。
驗證格式錯誤 XML/JSON - 檢查以及表單輸入傳遞到Web服務(wù)方法。
拋出通用錯誤信息 - Web服務(wù)方法應(yīng)使用HTTP錯誤信息像403,顯示禁止訪問等。
| S.N. | HTTP 代碼 & 描述 |
|---|---|
| 1 |
200 正確/正常, 顯示成功。 |
| 2 |
201 創(chuàng)建,當使用POST或PUT請求成功創(chuàng)建了資源。返回鏈接使用位置標頭新創(chuàng)建的資源。 |
| 3 |
204 無內(nèi)容, 當響應(yīng)主體是空的,例如,一個DELETE請求。 |
| 4 |
304 不修改, 用于減少以防條件GET請求的網(wǎng)絡(luò)帶寬的使用。響應(yīng)主體應(yīng)該是空的。頭應(yīng)該有日期,位置等。 |
| 5 |
400 錯誤的請求, 狀態(tài)表示無效輸入,例如提供驗證錯誤,數(shù)據(jù)丟失。 |
| 6 |
401 未經(jīng)授權(quán), 指出用戶正在使用無效或錯誤的身份驗證令牌。 |
| 7 |
403 被禁止, 指出用戶沒有訪問方法的使用,例如,刪除權(quán)限沒有管理員權(quán)限。 |
| 8 |
404 未找到, 狀態(tài)表示這個方法不可用。 |
| 9 |
409 沖突, 執(zhí)行方法,例如,添加重復(fù)條目狀態(tài)的沖突的情況。 |
| 10 |
500 內(nèi)部服務(wù)器錯誤,狀態(tài)該服務(wù)器已經(jīng)在執(zhí)行方法拋出了一些異常。 |