如何使用内置Express中间件实现HTTP GET请求的CSRF保护?
例如,用户通常通过GET请求进行注销,并实际更改Web应用程序的状态,因此应该对CSRF进行保护。
不幸的是,CSRF中间件忽略了HTTP GET,并且没有导出帮助程序来手动检查令牌。
答案 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)
app.use(csurf({ignoreMethods: ['HEAD', 'OPTIONS']}))