【问题标题】:sails: disable `blueprints actions` in production, since it creates a huge security footprint?帆:在生产中禁用“蓝图操作”,因为它会产生巨大的安全足迹?
【发布时间】:2014-04-18 15:11:41
【问题描述】:

结识Sails for Node。

我需要习惯的一件事是使用blueprints 设置控制器方法的路由的“自动”方式。

例如,从文档中,如果启用了actions-blueprints(默认情况下)将为每个控制器生成 GET、POST、PUT 和 DELETE 路由行动。

例如,从文档中,当您获得受控方法 EmailController.send 时,将创建以下路由:

     * `EmailController.send`
     * :::::::::::::::::::::::::::::::::::::::::::::::::::::::
     * `GET     /email/send/:id?`
     * `POST    /email/send/:id?`
     * `PUT     /email/send/:id?`
     * `DELETE  /email/send/:id?`

文档特别声明:actions 默认启用,并且可以用于生产 - 但是,您必须非常小心不要无意中将不安全的控制器逻辑暴露给 GET 请求。。 p>

通常我会为一个特定的 HTTP 动词(例如:POST)编写一个控制器方法。这显然与这种自动布线兼容,因为这些方法也会暴露在 GET(以及 PUT 和 DELETE)上,恕我直言,这会留下巨大的安全足迹。

那么:启用这些actions 的实际用途是什么?对我来说,这似乎是一个巨大的安全风险。另一方面,我可以(理论上)想象用条件逻辑编写 all 控制器方法来区分 HTTP VERBS ,但对于大多数控制器方法来说,这没有意义。

所以请帮帮我:使用这些 actions 有什么好处,Sails 似乎试图推动我前进?或者它只是一种快速上手的方式,但实际上并不适合生产?

感谢您关注这个问题。

【问题讨论】:

    标签: node.js sails.js


    【解决方案1】:

    动作蓝图自动创建所有可用控制器方法的路由。我个人将它们关闭,然后手动进行路由。

    Restful 蓝图会自动生成控制器方法本身。然后会有由动作蓝图创建的路由。我相信这些是其余的默认值....

     * GET      /boat/:id?      -> BoatController.find
     * POST     /boat           -> BoatController.create
     * PUT      /boat/:id       -> BoatController.update
     * DELETE   /boat/:id       -> BoatController.destroy
    

    【讨论】:

    • 我更喜欢 REST 蓝图,并认为我将在生产中启用它们(使用正确的策略)。我不喜欢的是动作蓝图。我问是因为这可能是我不喜欢它们的个人品味,所以我想知道想要在产品中启用它们的原因。
    • 您可以在禁用动作蓝图的情况下使用其余蓝图。你只需要手工制作路线。
    • 我个人不使用蓝图,因为我需要更多地控制我的控制器方法。
    • 您知道如何将策略添加到蓝图 restful 方法吗?我确实找到了如何做到这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多