使用 Restangular 使用 RESTful api - RESTful api 将数组作为***对象返回是不是安全?
Posted
技术标签:
【中文标题】使用 Restangular 使用 RESTful api - RESTful api 将数组作为***对象返回是不是安全?【英文标题】:Consuming a RESTful api with Restangular - Is it secure for a RESTful api to return an array as a top-level object?使用 Restangular 使用 RESTful api - RESTful api 将数组作为***对象返回是否安全? 【发布时间】:2015-03-17 16:47:55 【问题描述】:我正在使用 Python Flask 创建一个 RESTful Web 服务。对于我的一个端点,我想返回一个用户列表。 api 端点返回 JSON 格式如下:
"users": [
"Email": "email1@example.org",
"First": "Tom",
"Last": "Jones",
"id": 1
,
"Email": "email2@example.org",
"First": "Steven",
"Last": "Fry",
"id": 2
,
"Email": "email3@example.org",
"First": "Monty",
"Last": "Python",
"id": 3
]
如果我这样做,Restangular 会响应
错误:getList 的响应应该是一个数组而不是一个对象或 别的东西
这是设计的,因为 Restangular 需要一个 Array 而不是 javascript 对象。据我了解,有两种首选方法可以解决此问题:
选项 1 - 将响应包装在一个数组中,如下所示:
[
"users": [
"Email": "email1@example.org",
"First": "Tom",
"Last": "Jones",
"id": 1
,
"Email": "email2@example.org",
"First": "Steven",
"Last": "Fry",
"id": 2
,
"Email": "email3@example.org",
"First": "Monty",
"Last": "Python",
"id": 3
]
]
但是,根据这篇文章http://flask.pocoo.org/docs/0.10/security/#json-security,这并不安全。我的理解正确吗?
选项 2 - 第二个选项是使用此方法:https://github.com/mgonto/restangular#my-response-is-actually-wrapped-with-some-metadata-how-do-i-get-the-data-in-that-case 在这种情况下,有可能(我需要吗?)为所有返回多个项目的端点上的每个 getList 请求创建一个拦截器,例如'posts'端点,'messages'端点等?这是一个可行的或好的方法吗?
我的理解中有什么遗漏吗?
选项 1 似乎工作量较小,但可能会引入安全问题。选项 2 工作量更大,但可以缓解潜在的安全问题(如果有的话)。
如果有更好的“选项 3”,那就太好了!
【问题讨论】:
【参考方案1】:你可以设置isArray等于false,正常处理你的请求检查https://github.com/mgonto/restangular/issues/85
【讨论】:
以上是关于使用 Restangular 使用 RESTful api - RESTful api 将数组作为***对象返回是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AngularJS 和 Restangular 返回/编辑 REST 资源
如何使用 AngularJS 和 Restangular 返回/编辑 REST 资源
角度 $http.get / restangular 调用失败