前端之CSRF攻击

CSRF攻击是什么?

跨站请求伪造。其原理是攻击者构造网站后台某个功能接口的请求地址,诱导用户去点击或者用特殊方法让该请求地址自动加载。用户在登录状态下这个请求被服务端接收后会被误以为是用户合法的操作。对于 GET 形式的接口地址可轻易被攻击,对于 POST 形式的接口地址也不是百分百安全,攻击者可诱导用户进入带 Form 表单可用POST方式提交参数的页面。

举个例子

现在有两个网站:网站A和网站B,网站A是我们经常登陆的网站,他可能是bilibili,可以是一个网络游戏,可能是银行网站。网站B就是含有CSRF的网站,在我们登陆了网站A之后,又打开了网站B,然后我们“不小心”地点击了一个图片或者链接的时候,网站B向网站A发送了一个请求,这个请求可能会损害我们的利益,有可能是在bilibili上给人赠送金币,有可能是在网络游戏里面转移装备,有可能是通过电子银行转账。因为网站A正在处于打开状态或者网站A已经被你关闭了,但是还存着你的信息,所以网站A的服务器还是响应来自你浏览器的请求并处理这些请求。一旦网站A的服务器处理了浏览器的请求,用户就会损失自己的利益。

如何防范CSRF攻击
在用户层面上来讲,不要轻易点击来源未知的链接
在开发者的层面上来讲,我们可以有四个方式来解决这个问题。
  1. 服务端在收到路由请求时,生成一个随机数,在渲染请求页面时把随机数埋入页面中的input='hidden'标签中;
  2. 服务端设置setCookie,把该随机数作为cookie或者session种入用户浏览器,并随表单一起提交;
  3. 提交表单时尽量使用post而不是get,get会让用户的信息以明文显示;
  4. 提交到后台,通过后台验证我们发送的随机数是否是服务器向浏览器发送的随机数,达到验证用户是否是在当前页面提交的信息,如果不是,拒绝此请求。

你可能感兴趣的:(前端之CSRF攻击)