【问题标题】:Is setting up XSRF-TOKEN on the server still required with HttpClientXsrfModule?HttpClientXsrfModule 是否仍需要在服务器上设置 XSRF-TOKEN?
【发布时间】:2019-12-14 22:41:42
【问题描述】:

为了防止客户端app.module中的XSRF/CSRF,只写下面的代码就够了吗?

HttpClientXsrfModule.withOptions({
  cookieName: 'XSRF-TOKEN',
  headerName: 'X-XSRF-TOKEN'
})

还是需要服务器上的一些额外逻辑(Express/NestJS)?

【问题讨论】:

    标签: javascript angular express csrf nestjs


    【解决方案1】:

    您的服务器需要实现 csrf 令牌。然后客户端将令牌发回,以便在您的服务器上进行检查。如需更多信息,请参阅understanding csrf tokens


    要为您的 Nestjs 应用程序添加 csrf 支持,您可以使用 csurf 中间件,请参阅 nest security docs

    首先安装 csurf:

    $ npm i --save csurf
    

    然后在你的 main.ts 中添加中间件

    import * as csurf from 'csurf';
    app.use(csurf());
    

    【讨论】:

    • 这两行都是小事?不需要像这个例子 github.com/expressjs/csurf#single-page-application-spa 那样在服务器上传递 CSRF 令牌?
    • 不,您需要按照说明进行操作。如果不添加会话或 cookie 解析器等,它将无法工作。
    • 看起来 express-session 就足够了,因为根据官方文档,从 1.5.0 开始,cookire-parses 中间件不再需要与 express-session 一起使用。因此看起来,就像这两行 HttpClientXsrfModule + 这两行 csurf + express-session
    猜你喜欢
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2020-03-30
    • 2014-06-25
    相关资源
    最近更新 更多