CSRF攻击

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

什么是CSRF攻击呢?

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

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

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

get类型的CSRF攻击

在一个img标签里构建一个get请求,当页面被加载时,浏览器便会自动发起一个get请求。
<img src="http://xxx.org?value=100">

post类型的CSRF攻击

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

如:

<form id="hacker" action="http://xxx.com" method=POST>
  <input type="hidden" name="user" value="100" >
</form>
<script>document.getElementById("hacker").submit()</script>

链接类型的CSRF攻击

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

<body>
  <img src="xxx.jpg">
  <a href="http://xxx.org?value=100"></a>
</body>

如何防止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,则请求失败。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容