php – Symfony2 RESTful API AngularJS

我一直在研究一个基于Symfony2(用于后端)的电子商务项目和用于前端的AngularJS.目前,Symfony部分仅用作API,它具有三个不同的用户级别(访客,客户和管理员).可以在系统内完成的不同操作(如添加/删除数据)通过以下方式得到保护:

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

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

问题:

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

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

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

想法&可能的解决方案:

1)我正在查看JWT(Json Web Token)标准,尝试保护对我的API的公共调用,并以这样的方式实现它,即我为网站上的“真实”用户生成令牌,并且这样的限制直接访问公共API链接.

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

2)我还在阅读StackOverflow上的其他一些问题,我可以从请求中检查HTTP_X_REQUESTED_WITH标头,但我们都知道攻击者很容易欺骗它.

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

补充说明:

>我不想让这个防弹,但我也不想让人们选择点击2个按钮并获取我的所有数据.我知道最终所有信息都可能被“窃取”(例如:通过使用网络剪贴板),但是“保护”系统的方式是人们必须做出一点努力才是我的想法.
>在这个阶段,我无法真正重新模拟我的API,但任何想法都会受到赞赏

感谢您抽出宝贵时间阅读我的问题,我期待着您的反馈.

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

>限制API在要求CAPTCHA或其他验证方法之前返回的请求总数.这可能受到IP,浏览器指纹,身份验证令牌等的限制.
>通过使用GUID或其他随机生成的ID,滥用者难以猜测产品,类别等的ID.
>使用API​​管理代理(如Azure API Management)实现API的更多企业级管理(http://justazure.com/azure-api-management-part-one-introduction/)

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...