【问题标题】:Using csurf with react-server使用 csurf 和 react-server
【发布时间】:2017-05-18 18:52:06
【问题描述】:

我想在通用应用程序的react-server 中添加csurf 作为快速中间件。

我想要实现的是将 csrf 令牌添加到 react 组件中表单中的隐藏输入中,以保持与服务器呈现的网站相同的 csrf 保护流程,但在 SPA 中。

这在技术上是否可以在 react-server 中实现?如果是这样,我如何通过页面(理想情况下)将响应对象中可用的 csrf 令牌传递给反应组件?

【问题讨论】:

    标签: javascript node.js reactjs csrf react-server


    【解决方案1】:

    我实际上遇到了同样的问题,幸运的是在这里遇到了解决方案:https://github.com/kriasoft/react-starter-kit/issues/1142

    使用它只需这样做:

    app.use(csrf({ cookie: true, value: (req) => (req.cookies.csrfToken) }));
    

    然后为每个 get 请求设置一个带有 csrf 令牌的 cookie:

    res.cookie('csrfToken', req.csrfToken ? req.csrfToken() : null, { sameSite: true, httpOnly: true }); 
    

    【讨论】:

    • 感谢您指出这一点,这似乎是一个相当通用的解决方案,因此它也可以在 react-server 上下文中工作。
    • 我不明白这是什么意思。如果您在每个请求中自动设置令牌,而不从客户端接收它,那么它几乎没用
    • 我认为检查 CSRF 令牌的自定义 value 函数不应查看 cookie 内部,而应查看请求的正文或标头中,如 default behaviour in the csurf docs 所述,否则检查 cookie 让服务器容易受到你试图防御的 CSRF 攻击!
    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 2014-09-19
    • 2015-11-10
    • 2014-07-18
    • 2016-05-16
    • 2020-04-23
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多