RESTful Web Services – 安全性
由于RESTful Web Services是使用HTTP URL路径进行工作的,因此在同样的方式下为RESTful Web Service提供保护是非常重要的。
以下是在设计RESTful Web Service时应遵守的最佳实践:
-
验证 − 在服务器上验证所有输入。保护您的服务器免受SQL或NoSQL注入攻击。
-
基于会话的身份验证 − 使用基于会话的身份验证以在请求Web Service方法时对用户进行身份验证。
-
URL中不含敏感数据 − 永远不要在URL中使用用户名、密码或会话令牌,这些值应通过POST方法传递到Web Service。
-
方法执行受限 − 允许受限制使用GET、POST和DELETE方法。GET方法不应该能够删除数据。
-
验证格式错误的XML / JSON − 检查传递给Web Service方法的格式正确的输入。
-
抛出通用错误消息 − Web Service方法应使用HTTP错误消息,如403表示访问被禁止,等等。
HTTP状态码
序号 | HTTP代码及描述 |
---|---|
1 | 200 OK − 显示成功。 |
2 | 201 CREATED − 当使用POST或PUT请求成功创建资源时。返回新创建的资源的链接使用位置标头。 |
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 − 指出在执行该方法时服务器抛出了一些异常。 |