【问题标题】:Symfony2 - handle HTTP/Entity user access restrictionsSymfony2 - 处理 HTTP/Entity 用户访问限制
【发布时间】:2015-08-22 12:29:47
【问题描述】:

我们在我的团队中讨论了如何在我们的应用中处理 http 限制。

在我们的应用中,用户可以创建产品。所以我们有像/products/product/1/show 这样的路由来列出和显示用户的产品。一个用户看不到另一个用户的产品。该应用程序使用 REST 端点来获取数据。 API 调用看起来像这样/api/product/1/ 来获取单个产品。

我们为其他类型的实体提供了更多路由/API 端点。

问题是如何保护路由/API 请求免受其他用户的攻击?

我们有两种解决方案:

  1. 使用防火墙和选民。投票者获取当前 url /product/1/show 并检查给定产品是否为当前登录用户所有。

  2. 使用没有防火墙的选民:http://symfony.com/doc/current/cookbook/security/voters_data_permission.html

  3. 使用角色系统:http://jmsyst.com/bundles/JMSSecurityExtraBundle/master/annotations

我更喜欢解决方案 1。因为我们需要的所有信息(谁是产品的所有者)仍然存在。我们只需要获取实体并进行检查。 在解决方案 2 中,我们必须将投票者逻辑分布在多个控制器上。

有没有关于这个问题的建议或经验?

【问题讨论】:

    标签: security symfony http


    【解决方案1】:

    如果我必须在这三个之间进行选择,那将是 1。但我建议采用不同的路线。我假设 /product/1/show 中的数字 1 代表用户编号?如果是这种情况,我建议您创建没有数字的新路线,例如/我的产品/节目。然后控制器必须使用当前登录用户的 id。

    【讨论】:

    • 1 代表产品 ID
    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多