0

如何使用内置 Express 中间件对 HTTP GET 请求实施 CSRF 保护?

例如,用户注销通常是通过 GET 请求进行的,并且实际上会更改 Web 应用程序的状态,因此应该保护它免受 CSRF 的影响。

不幸的是,CSRF 中间件忽略了 HTTP GET 并且不导出帮助程序来手动检查令牌。

4

2 回答 2

1

您可以创建一个不会忽略 GET 请求的 Connect CSRF 中间件的自定义分支。这样做的行在这里:https ://github.com/senchalabs/connect/blob/master/lib/middleware/csrf.js#L76

但是,不要这样做。GET 请求是安全且幂等的:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

换句话说,没有人担心恶意 Web 脚本可能会将他们从站点中注销。令人担心的是,它可能会以您的名义发布垃圾邮件或从您的银行帐户中转出资金。这就是你需要 CSRF 来防范的。更多信息在这里:http ://en.wikipedia.org/wiki/Csrf

于 2013-10-22T02:12:44.910 回答
1

顺便说一句,他们现在公开了明确设置要忽略的方法的方式

app.use(csurf({ignoreMethods: ['HEAD', 'OPTIONS']}))
于 2017-11-27T17:59:52.787 回答