CSRF攻击

除了XSS攻击外,还有一种叫CSRF的攻击不容小视。

什么是CSRF攻击呢?

CSRF攻击又称跨站请求伪造,攻击者利用用户在网站的登录状态,并通过第三方站点实施攻击的一种手段。

与XSS攻击的不同之处在于,CSRF攻击不需要往用户的页面中注入恶意脚本。

常见的CSRF攻击有自动发起get请求自动发起post请求诱导用户点击链接三种方式。

get类型的CSRF攻击

在一个img标签里构建一个get请求,当页面被加载时,浏览器便会自动发起一个get请求。

post类型的CSRF攻击

在页面中隐藏一个表单,当用户打开页面时,自动提交这个表单。

如:

链接类型的CSRF攻击

a标签的href属性里构建一个请求,然后诱导用户去点击。


  
  

如何防止CSRF攻击呢?

发起CSRF攻击有两个条件,分别是用户登录了目标站点,且浏览器保留了用户的登录状态;用户打开了第三方站点。

  1. 使用sameSite属性

攻击者会利用登录状态来发起CSRF攻击,而Cookie是保持登录状态的关键数据,所以,可以在Cookie上想办法防止CSRF攻击。

Cookie中加入sameSite属性,samesite有三种值。

  • strict
    第三方站点发起的请求都不会携带cookie`。
  • lat
    get请求会携带cookie,post请求不会。
  • none
    任何请求都会携带cookie
  1. 验证请求来源

服务端验证请求源,如果请求来自非指定源,则服务端不做响应。

  1. CSRF Token

浏览器向服务端发送请求时,服务端生成一个CSRF Token,并将它植入到返回的页面中。当再次发起请求时,就需要携带这个CSRF Token,如果没有这个token,则请求失败。

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