【发布时间】:2015-08-22 12:29:47
【问题描述】:
我们在我的团队中讨论了如何在我们的应用中处理 http 限制。
在我们的应用中,用户可以创建产品。所以我们有像/products 和/product/1/show 这样的路由来列出和显示用户的产品。一个用户看不到另一个用户的产品。该应用程序使用 REST 端点来获取数据。 API 调用看起来像这样/api/product/1/ 来获取单个产品。
我们为其他类型的实体提供了更多路由/API 端点。
问题是如何保护路由/API 请求免受其他用户的攻击?
我们有两种解决方案:
使用防火墙和选民。投票者获取当前 url
/product/1/show并检查给定产品是否为当前登录用户所有。使用没有防火墙的选民:http://symfony.com/doc/current/cookbook/security/voters_data_permission.html
使用角色系统:http://jmsyst.com/bundles/JMSSecurityExtraBundle/master/annotations
我更喜欢解决方案 1。因为我们需要的所有信息(谁是产品的所有者)仍然存在。我们只需要获取实体并进行检查。 在解决方案 2 中,我们必须将投票者逻辑分布在多个控制器上。
有没有关于这个问题的建议或经验?
【问题讨论】: