1.什么是CSRF?跨站请求伪造(英文:Cross-siterequestforgery),又称一键攻击或会话骑马,通常简称为CSRF或XSRF,是一种通过胁迫用户执行无意操作的攻击方法。2.实际攻击场景下面以某银行网站的转账功能来说明攻击原理。备注:网址等信息均为虚构。1、登录账号正常登录银行网站,查询其后台信息后未退出;假设银行的转账URL是:https://bank.example.com/withdraw?account=AccoutName&amount=1000&for=PayeeName2,恶意链接此时,你看到一个来自其他网站的诱饵链接,你下意识地点击了它;诱饵链接包含恶意代码(将真实图片链接替换为转账链接)中src属性的链接加载图片,但实际执行的是传输操作;转账请求使用的电脑、浏览器、ip等环境与登录账号时的环境完全一致。银行网站后台会认为这是你在操作,所以验证通过,直接转账。3.防止CSRF攻击。服务器端对请求进行身份验证,拒绝验证不通过的请求,即CSRF攻击。1、第一种方式:验证码向手机发送数字验证码,图形验证码,用于客户身份识别,并让用户重新输入账户密码进行重新验证。2、方法二:TokenToken使用流程:1、服务端生成一个CSRFtoken;2、客户端(浏览器)提交带有CSRFtoken信息的表单;3.服务器收到CSRF令牌并验证其有效性。原理解释:攻击者可能在上述客户端获取到CSRFtoken,但攻击者只能使用JavaScript发起请求。如果服务器不支持CORS(跨域资源),攻击者的跨域JavaScript请求将被拦截。服务器拒绝阻止CSRF攻击。推荐在Node.js项目中使用csurf。具体使用方法看这里!4、参考文档如何防止跨站请求伪造攻击(CSRF)?
