返回首页 RESTful Web 服务教程

RESTful Web 服务 - 安全性

因为 RESTful Web 服务使用 HTTP URLs 路径,因此以保护网站同样的方式维护 RESTful Web 服务是非常重要的。以下是设计 RESTful Web 服务时要遵循的最佳实践。

  • 验证 - 验证服务器上的所有输入。保护服务器免受 SQL 或者 NoSQL 注入攻击。
  • 基于会话的认证 - 请求一个 Web 服务方法时使用基于会话的认证对用户进行身份验证。
  • URL 不要有敏感数据 - 永远不要在 URL 中使用用户名,密码或者会话标记,这些值应该通过 POST 方法传递给 Web 服务。
  • 限制方法执行 - 允许限制使用方法,比如 GET,POST,DELET。GET 方法不应该能够删除数据。
  • 验证有缺陷的 XML/JSON - 检查格式良好的输入传递给 Web 服务方法。
  • 抛出通用错误消息 - Web 服务方法应该使用 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 ,指出执行该方法时服务器抛出了一些异常。