sails:在生产中禁用`blueprints actions`,因为它会产生巨大的安全空间?

时间:2014-04-18 15:11:41

标签: node.js sails.js

为节点获取Sails

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

例如,从文档中,如果actions - 蓝图已启用(默认情况下为),则会为每个蓝图生成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请求

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

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

请帮助我:使用这些actions的优势是什么,Sails似乎试图推动我走向?或者它只是一种快速上手的方式,但真的不适合生产?

感谢我把头包裹起来。

1 个答案:

答案 0 :(得分:0)

Action Blueprints自动创建指向所有可用控制器方法的路径。我亲自关掉它们,然后手动完成路由。

Restful蓝图自动生成控制器方法。然后,哪些路径将由Action Blueprints创建。我相信这些是其余的默认值....

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