我一直在研究一个基于Symfony2(用于后端)的电子商务项目和用于前端的AngularJS.目前,Symfony部分仅用作API,它具有三个不同的用户级别(访客,客户和管理员).可以在系统内完成的不同操作(如添加/删除数据)通过以下方式得到保护:
1)具有用户角色/访问控制的Symfony2防火墙
2)额外的JMS安全性(@PreAuthorize表达式)
对于安全的部件,一切都按预期工作,我对工作方式非常满意.
问题:
API的某些部分是公开的(例如检索产品信息,类别等).我正在使用Ajax调用我的API检索Angular中的此类数据,该API调用JSON格式的数据.一个例子是:
/ API /产品/ /?页= 1&得到-所有计数= 10&排序[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/但我不完全确定这适合我的目的.
补充说明:
感谢您抽出宝贵时间阅读我的问题,我期待着您的反馈.