网站开发方案ppt,做网站的企业是什么行业,优秀网站 要素,php开发工具哪个好用Node中的CSRF攻击和防御
假设有一个网上银行系统#xff0c;用户可以通过该系统进行转账操作。转账功能的URL可能是这样的#xff1a;
https://www.bank.com/transfer?toAccount123456amount1000当用户登录到银行系统#xff0c;并在浏览器中访问这个URL时#xff…Node中的CSRF攻击和防御
假设有一个网上银行系统用户可以通过该系统进行转账操作。转账功能的URL可能是这样的
https://www.bank.com/transfer?toAccount123456amount1000当用户登录到银行系统并在浏览器中访问这个URL时银行系统会执行转账操作将1000元转入账户123456。
CSRF攻击过程 受害者登录用户Alice登录到她的网上银行账户比如www.bank.com。 攻击者准备攻击页面攻击者Eve创建了一个恶意网站www.evil.com并在该网站上嵌入了一段HTML代码或JavaScript代码试图利用CSRF漏洞 img srchttps://www.bank.com/transfer?toAccount999999amount1000 styledisplay:none或者通过JavaScript发送请求 var img new Image();
img.src https://www.bank.com/transfer?toAccount999999amount1000;受害者访问恶意网站当Alice在已经登录银行系统的情况下访问了Eve的恶意网站浏览器会自动执行页面中的代码发送一个请求到银行系统。 请求执行因为Alice已经在银行系统中登录浏览器会带上Alice的会话Cookie。这时银行系统收到请求后会认为这是一个合法的请求并执行转账操作将1000元转入攻击者的账户999999。
防御措施
设置后端的cookie 禁止跨域携带cookie 我们只需要把cookie设置的 SameSite:Strict即可;验证 referer和Origin 每个页面都会带这哥俩 通过验证这哥俩也就可以了使用token 每一次请求都带token使用验证码 要求用户进行敏感操作的时候 填写验证码表单随机数(这种做法是在服务端渲染的时候用) 1.生成一个随机数放到 session中2.生成页面时表单中加入一个隐藏的表单域 : input typehidden name:Hash value%session[key]%3.服务端 进行验证随机数4.清除session中的随机数 二次验证比如要求用户获取验证码进行验证