csrf攻击精简总结(原创)

跨站请求伪造(Cross-Site Request Forgery, CSRF)是一种在Web应用程序中常见的安全威胁。CSRF攻击者通过利用暴露给用户的身份验证凭据,欺骗用户执行自己非法操作或提交恶意请求。本文将介绍CSRF攻击的几种手法并举例说明。

1.常规CSRF攻击

常规CSRF攻击指攻击者构造一个带有恶意参数的请求,当用户在不知情的情况下访问了含有这个请求的页面时,就会在用户的浏览器中自动提交这个请求。

例如,某个银行网站有一个转账的功能,正常情况下,用户需要先输入转出账户的密码才能继续进行操作。但是,攻击者先在自己的网站中构造一个转账请求,并把请求参数中的账户设置成攻击者自己的账户,然后在邮件等渠道中发布一个诱人点击的链接,当用户点击该链接进入银行网站时,银行网站会认为这是正常的转账请求,而继续执行该请求并将钱转到攻击者的账户中。

2.基于Referer头的CSRF攻击

有些网站会对请求来源进行检查,如果请求来源不是来自同一域名下的页面,就拒绝该请求,这通常是通过检查http头中的Referer来实现的。攻击者可以利用这一点,在构造恶意请求时在Referer头中伪造为目标网站的来源,使得目标网站放松了对请求来源的检查。

例如,在某个电子商务网站中,用户需要先登录才能进行购买商品的操作。攻击者通过构造一个恶意页面,此页面中通过Image标签加载了一个由攻击者制作的图片。电子商务网站中有一个添加商品到购物车的功能,当用户点击“加入购物车”的按钮时,该网站会发送一个Ajax请求给后台,告诉服务器需要添加哪些商品。构造恶意页面中的图片处于一个站外的恶意页面中,而图片的源地址指向商城的添加商品操作。当用户进入攻击页面后,在渲染页面并加载图片时,实际上是发送了一个请求去添加商品到购物车,因为此时请求的Referer头是由攻击者伪造的,所以请求被成功地认证并执行。

3.利用CSRF Token的攻击

为了防止CSRF攻击,通常采用CSRF Token来进行防御。CSRF Token是一个动态生成的随机字符串,该字符串会绑定到用户会话中的请求中。目标网站将这个Token添加到表单中或者是放置在Cookie中作为一个属性,以保证用户提交的请求只是由该网站所接受的请求。

攻击者可以通过获取到此Token,从而进一步构造合法请求,达到模拟用户行为的目的。攻击者可以用简单的技术手段获取到Token,例如直接在页面中搜索,在HTTP Header中查找等。

防护

以上提到的CSRF攻击手法并不全面,还有很多其他的手法。为了防御csrf攻击,网站管理员可以采用以下措施:

1.确保每一个用户请求都经过身份验证,采用多因素身份认证方法。

2.在敏感操作上必须进行二次确认,例如短信验证。

3.动态生成Token,并进行验证,如采用数字签名等。

4.记录用户的登录时间和IP地址,检测异常行为并记录异常日志。

5.启用HTTPS协议和HTTPOnly属性。

6.定期更新网站的密码和Token,检测Web漏洞。

在Web应用程序上,CSRF攻击不断演变,安全需求也在不断增长。了解CSRF攻击并采取必要的防范措施是应对这一威胁的必要手段。

你可能感兴趣的:(网络安全,web安全)