php - Symfony2 RESTful API + AngularJS

标签 php angularjs api symfony

我一直致力于一个基于 Symfony2(用于后端)和 AngularJS 用于前端的电子商务项目。目前 Symfony 部分仅用作 API,它具有三个不同的用户级别( guest 、客户和管理员)。可以在系统内完成的不同操作(如添加/删除数据)受以下因素保护:

  1. 具有用户 Angular 色/访问控制的 Symfony2 防火墙
  2. JMS 安全额外(@PreAuthorize 表达式)

对于安全的部分,一切都按预期工作,我对工作方式非常满意。

问题:

API 的某些部分是公开的(例如检索产品信息、类别等)。我正在使用 Ajax 调用我的 API 以 JSON 格式返回数据,从而在 Angular 中检索此类数据。一个例子是:

/api/product/get-all/?page=1&count=10&sorting[id]=asc

问题是任何人都可以在浏览器中查看请求并复制路径并访问所有数据(例如所有产品)并且可以下载所有信息的 JSON。尽管这些数据是“公开的”,但我不想让其他人轻松地“窃取”我的数据。

想法和可能的解决方案:

  1. 我正在研究 JWT(Json Web token )标准以尝试保护对我的 API 的公共(public)调用并以我为网站上的“真实”用户生成 token 的方式实现它,等等限制对公共(public) API 链接的直接访问。

你怎么看?这是一个可能的解决方案吗?

  1. 我还在 StackOverflow 上阅读了其他一些问题,我可以检查请求中的 HTTP_X_REQUESTED_WITH header ,但我们都知道这很容易被攻击者欺骗。

  2. 最后,我在这里阅读了与“解决方案”1) 类似的方法:http://engineering.talis.com/articles/elegant-api-auth-angular-js/但我不确定这是否符合我的目的。

补充说明:

  • 我不想让它变得万无一失,但我也不想让人们可以选择单击 2 个按钮并获取我的所有数据。我知道最终所有信息都可能被“窃取”(例如:通过使用网络 scraper ),但是以人们必须付出一些努力的方式“保护”系统这就是我的想法。
  • 在这个阶段我真的不能对我的 API 重新建模太多,但是任何想法都将不胜感激

感谢您花时间阅读我的问题,我期待您的任何反馈。

最佳答案

您可以通过多种方式限制对您系统的滥用,包括:

  • 限制 API 在需要验证码或其他验证方法之前返回的请求总数。这可以通过 IP、浏览器指纹、身份验证 token 等进行限制。

  • 通过使用 GUID 或其他随机生成的 ID,让滥用者难以猜测产品、类别等的 ID。

  • 使用 API 管理代理(例如 Azure API 管理)对 API 进行更多的企业级管理 (http://justazure.com/azure-api-management-part-one-introduction/)

关于php - Symfony2 RESTful API + AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31531977/

相关文章:

javascript - PHP 对重音符号和特殊字符进行编码

php - 无法设置 cakephp AuthComponent sessionKey

javascript - 检查数组是否有 AngularJs 中的特定索引

php - 图片上传/接收API

PHP:5层模型

PHPExcel 无法打开文件

javascript - 在 ng-change 之后从 Controller 重置 ng-model 值

javascript - 如何在 AngularJS 的范围之间附加输入框值

java - 用 Java 打印 Microsoft Office 和 PDF 文件

api - 在流明中启用 CORS