sails.js 某些 URL 是否可以免除 CSRF?
Can certain URLs be exempt from CSRF in sails.js?
我正在设置 Stripe 以与我的 sails.js 服务器一起使用,为了使用 Stripe 的 webhook,我需要为我提供给 Stripe 的 URL 禁用 CSRF。
是否可以使某些 URL 免除 sails.js 中的 CSRF POST 要求?我能找到的唯一 CSRF 配置是全局打开它,并查看 csrf 钩子 (https://github.com/balderdashy/sails/blob/master/lib/hooks/csrf/index.js) 的源代码,看起来如果我尝试提供自定义对象,它就会被替换为全局设置。
谢谢
所以在阅读了问题中链接的 csrf 钩子之后,我设法解决了这个问题。
从 v0.11.0 开始:
如果您尝试在 csrf.js 配置文件中为对象提供设置,挂钩会简单地用 "default on" 覆盖所有设置。 csrf 对象最终看起来像这样
{
grantTokenViaAjax: true,
protectionEnabled: true,
origin: '-',
routesDisabled: '-'
}
为了给object添加route exceptions,需要在这个设置好之后再做,所以我在config/bootstrap.js中做了这个。所以要添加路由“http://yourhost.com/webhooks/testhook/”:
// In bootstrap.js
sails.config.csrf.routesDisabled = "/webhooks/testhook";
如果要添加多个挂钩,请将它们添加到同一字符串中,以逗号分隔:
// In bootstrap.js
sails.config.csrf.routesDisabled = "/webhooks/testhook,/webhooks/anotherhook";
所以 Murcho 的解决方案是有效的,但实际上,sails v0.11 有一个专门用于此的配置文件:
在 config/csrf.js
中,在激活 csrf 保护的行之后是这个注释块:
/****************************************************************************
* *
* You may also specify more fine-grained settings for CSRF, including the *
* domains which are allowed to request the CSRF token via AJAX. These *
* settings override the general CORS settings in your config/cors.js file. *
* *
****************************************************************************/
// module.exports.csrf = {
// grantTokenViaAjax: true,
// origin: ''
// }
您只需要在那里添加一个配置对象来扩展默认值:
module.exports.csrf = {
"routesDisabled": "/webhooks/testhook,/webhooks/anotherhook"
}
我正在设置 Stripe 以与我的 sails.js 服务器一起使用,为了使用 Stripe 的 webhook,我需要为我提供给 Stripe 的 URL 禁用 CSRF。
是否可以使某些 URL 免除 sails.js 中的 CSRF POST 要求?我能找到的唯一 CSRF 配置是全局打开它,并查看 csrf 钩子 (https://github.com/balderdashy/sails/blob/master/lib/hooks/csrf/index.js) 的源代码,看起来如果我尝试提供自定义对象,它就会被替换为全局设置。
谢谢
所以在阅读了问题中链接的 csrf 钩子之后,我设法解决了这个问题。
从 v0.11.0 开始:
如果您尝试在 csrf.js 配置文件中为对象提供设置,挂钩会简单地用 "default on" 覆盖所有设置。 csrf 对象最终看起来像这样
{
grantTokenViaAjax: true,
protectionEnabled: true,
origin: '-',
routesDisabled: '-'
}
为了给object添加route exceptions,需要在这个设置好之后再做,所以我在config/bootstrap.js中做了这个。所以要添加路由“http://yourhost.com/webhooks/testhook/”:
// In bootstrap.js
sails.config.csrf.routesDisabled = "/webhooks/testhook";
如果要添加多个挂钩,请将它们添加到同一字符串中,以逗号分隔:
// In bootstrap.js
sails.config.csrf.routesDisabled = "/webhooks/testhook,/webhooks/anotherhook";
所以 Murcho 的解决方案是有效的,但实际上,sails v0.11 有一个专门用于此的配置文件:
在 config/csrf.js
中,在激活 csrf 保护的行之后是这个注释块:
/****************************************************************************
* *
* You may also specify more fine-grained settings for CSRF, including the *
* domains which are allowed to request the CSRF token via AJAX. These *
* settings override the general CORS settings in your config/cors.js file. *
* *
****************************************************************************/
// module.exports.csrf = {
// grantTokenViaAjax: true,
// origin: ''
// }
您只需要在那里添加一个配置对象来扩展默认值:
module.exports.csrf = {
"routesDisabled": "/webhooks/testhook,/webhooks/anotherhook"
}