CSRFCSRF是CrossSiteRequestForgery的缩写,翻译过来就是CrossSiteRequestForgery。跨站:顾名思义,就是从一个网站到另一个网站。请求:HTTP请求。伪造:这里可以理解为模仿、伪装。合起来的意思就是:A网站向B网站发起了一个请求,这个请求是经过伪装的。伪装操作的目的是让请求看起来像是从B网站发起的,也就是说,让B网站所在的服务器误认为请求是从自己的网站发起的,而不是从B网站发起的。一个网站。CSRF攻击是黑客利用受害者的cookie来欺骗服务器的信任,但是黑客无法得到cookie,也看不到cookie的内容。另外,由于浏览器同源策略的限制,黑客无法解析服务器返回的结果。因此,黑客无法从返回的结果中得到任何信息。他能做的就是向服务器发送请求,执行请求中描述的命令,直接在服务器端改变数据的值,而不是窃取服务器中的数据。因此,我们要保护的对象是可以直接产生数据变化的服务,读取数据的服务不需要CSRF保护。原理图来源:CSRF攻击原理及nodejs的实现与防御 从上图可以看出,假装从网站A发起请求,必须依次完成两个步骤: 1。登录可信网站A,并在本地生成cookies。 2。在不退出A的情况下访问危险网站B。 之所以假装从A网站发起,是因为cookies不能跨域发送。结合上面的例子,就是:如果一个请求是直接从A网站发送到B网站的服务器,是不可能把A网站生成的cookies一起发送到B服务器的。为什么要发送cookie?这是因为服务器在用户登录后会在cookie中返回一些用户信息给客户端,然后客户端在请求一些需要认证的资源时会把cookie发送给服务器。进行用户认证的信息,认证通过后才会做出正确的响应。当B网站访问A网站服务器上一些需要认证的资源时,如果没有cookie信息,服务器拒绝访问,那么B网站就无法进行恶意操作。而如果请求伪造成AB网站,则可以将A网站的cookie一起发送给A服务器。这时候服务器认为这个请求是合法的,就会给出正确的响应。这时候B网站的目的就达到了。.妥协攻击者窃取了您的身份并代表您发送了恶意请求。CSRF可以做的包括:以你的名义发送邮件和信息,窃取你的账户,甚至购买商品,转移虚拟货币……造成的问题包括:个人隐私泄露和财产安全。如何防范CSRF攻击CSRF攻击之所以能够得逞,是因为黑客可以完全伪造用户请求。请求中所有的用户认证信息都存在cookie中,黑客可以在不知道认证信息的情况下直接利用用户。cookie以通过安全验证。防御CSRF的关键是在请求中放入黑客无法伪造的信息。对于关键操作,使用post方法:出于安全考虑,目前的浏览器默认有一定的限制。通过表单标签发送到其他网站的请求将被拦截。使用验证码:强制用户与应用交互,完成最终请求。例如:用户每次提交表单时,都需要填写一个验证码。向请求地址添加令牌并验证AntiCSRFToken。当服务器收到路由请求时,它会生成一个随机数,并在渲染请求页面时嵌入随机数。页面(一般嵌入在form表单中,
