如何在Express中实现GET请求的CSRF保护?

时间:2013-10-21 22:08:59

标签: node.js express csrf

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

例如,用户通常通过GET请求进行注销,并实际更改Web应用程序的状态,因此应该对CSRF进行保护。

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

2 个答案:

答案 0 :(得分:0)

您可以创建一个不会忽略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

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

答案 1 :(得分:0)

BTW,他们现在揭露了明确设置忽略哪些方法的方式

app.use(csurf({ignoreMethods: ['HEAD', 'OPTIONS']}))