浅析CSRF攻击

一、CSRF简介

CSRF(Cross-site request forgery跨站请求伪造),也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。

CSRF与之前说道XSS相比,出现比较少,流行度也不高,但是一旦出现,就是危害巨大的,难于防御(因为影响业务和用户体验)。CSRF攻击的本质是攻击者盗用合法用户的身份性,以用户的名义进行非法操作。

二、CSRF进阶

浏览器所持有的Cookie分为两种:一种是“Sesion Cookie”,又称“临时Cookie”;另一种是“Third-party Cookie”,也称为“本地cookie”。两者的区别在于,Third-party Cookie是服务器在Set-Cookie时指定Expire时间,只是到了Expire时间后Cookie才会失效,所以这种Cookie才会保存在本地;Session Cookie则没有指定Expire时间,所以关闭浏览器,Session Cookie就会失效。

在浏览网站的过程中,若是一个网站设置了Session Cookie,那么在浏览器的进程的生命周期内,及时浏览器心打开一个Tab页面,Session Cookie也是有效的,Session Cookie保存在浏览器进程的内存空间中。CSRF攻击就是建立在会话之上的。

总结一下,CSRF攻击需要两个条件:

1、CSRF攻击建立在浏览器与服务器的会话中;

2、欺骗用户访问攻击URL;

浏览器也会有一些安全策略防御,IE处于安全的考虑,默认禁止了浏览器在<img>,<iframe>,<scrtpt>,<link>等标签中发送第三方Cookie。而Firefox中,默认策略是允许发送第三方Cookie的。

P3P

P3P是一种被称为个人隐私安全平台项目(the Platform for Privacy Preferences)的标准,能够保护在线隐私权,使Internet冲浪者可以选择在浏览网页时,是否被第三方收集并利用自己的个人信息。如果一个站点不遵守P3P标准的话,那么有关它的Cookies将被自动拒绝,并且P3P还能够自动识破多种Cookies的嵌入方式。p3p是由全球资讯联盟网所开发的。

随着Internet的发展,电子商务发展势头也异常迅猛。这种新的贸易方式在带给人们难以想象的便利前提下,也给人们带来了以往现金交易模式下所没有的麻烦——通过网络泄露个人隐私数据。(Platform for Privacy Preferences)正是一种可以提供这种个人隐私保护策略,并且正在被越来越多的技术人员接受的新技术。

Java实现:在Response的响应头中加入

response.setHeader("P3P","CP=/"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR/"");

请注意不要滥用该P3P属性,以免带来安全隐患。

CSRF攻击成功的本质原因是重要操作的所有参数都是可以被攻击者猜测到了。

三、CSRF的防御

3.1 验证码

验证码是认为对抗CSRF攻击最简洁而有效的防御方法。但是考虑到用户的体验效果,最好是在重要的操作再使用验证码。所以在支付的时候都可以看到再一次输入密码或者验证码的要求。

3.2 混淆参数

CSRF攻击多是通过构造URL进行攻击的,所以可以在URL请求中加入一些随机数或者混淆。

http://www.XXXXXX.com/XXXXX.php?url=rHfK000YH1eRCqsWBVUDjjv3ru5QictGyTrai04fZHnNCmGNz8Oyoc3XLJslxxiLK4Uhf91JVGzeFUXujPJ4iZlOFZKFZGlb7bU_TZMwAiSlA9D2-f4NdEuyQYp8UVXHBw1W0WY.7Y_ifkR5QZWY8BHCwKZWHaqhWKY5BWJI64qt7jHzk8sHfGmqx-OcO3ZgKfYt8-P1tA-BZZjdsRP5QfHPGmsSxH9LqrZd_sSxH9vUtr1dsSXej_SyZx8sSXej_LmIMAz1c_HZ4xl54xPmuCyr1Wgvy0.THdxnHf1PW6vnHD1PfKYTh7buy-b5Hm4njD0mvq1I7qzmy4o5H00TLNBTy-b5HDYn1m3PWDkn1RLnWnLP10zPWb0ugw4TARqnHD0uy-b5H00uyw-TvPGujYs0AP_pyPogLw4TARqn6KsUWYk0Zw-ThdGUh7_5H00XMfqTvN_u6KsTjYkP101rHnYP1c0mywGujYznH04n161P1DsPfKGTdqLpgF-UAN1T1Ys0AN3Ijd9mvP-TLPRXgK-rhdsr1VsIh-brWDYn1m3PWDkn1RLnWnLP10zPWberv-1N-PfrW0erLKzUvwdmLwRXgK-rWnknjcerLw1Tv-brMNGc10hmMPFUMPdTh78mvRWnBuBTY-8IhN1IankFhF1HAq9UBnz0APzm1YLPjRk&ck=2818.174.177.351.22.678.292.1631

3.3 Token

请求加入Token是目前防御CSRF最好的方式,对应用的框架水平要求就高,用户的会话有效期也不宜过长。

Token防御的重点在于Token的生成、保存、校验、失效等方面。

1、Token生成:时间戳+随机数,长度16--20位即可,时间戳就是为了判断Token是否失效;

2、Token只能使用一次,而且只在重要的操作时候进行校验Token;

3、Token保存:后台:分布式缓存系统中;前端页面的标签:<meta name="CSRF_Token" content="14232454567687456486796" />;

4、通过Javascript构造安全链接URL,并带上Token;

时间: 2024-10-10 08:04:13

浅析CSRF攻击的相关文章

SQL 注入、XSS 攻击、CSRF 攻击

SQL 注入.XSS 攻击.CSRF 攻击 SQL 注入 什么是 SQL 注入 SQL 注入,顾名思义就是通过注入 SQL 命令来进行攻击,更确切地说攻击者把 SQL 命令插入到 web 表单或请求参数的查询字符串里面提交给服务器,从而让服务器执行编写的恶意的 SQL 命令. 对于 web 开发者来说,SQL 注入已然是非常熟悉的,而且 SQL 注入已经生存了 10 多年,目前已经有很成熟的防范方法,所以目前的 web 应用都很少会存在漏洞允许进行 SQL 注入攻击. 除非是入门开发人员,在开发

CSRF攻击详解

CSRF是什么 CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF CSRF可以做什么 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. CSRF漏洞现状 CSRF这种攻击方式在200

csrf攻击

知识点:http请求是无状态的,也就是说每次http请求都是独立的无关之前的操作的,但是每次http请求都会将本域下的所有cookie作为http请求头的一部分发给服务器,所以服务器就根据请求中的cookie存放的sessionid去session对象中找到用户记录. 理解了以上,csrf攻击就是恶意的复制用户的信息,并做一系列危害用户利益的操作,这就是csrf的机制. csrf攻击的主要目的是让用户在不知情的情况下攻击自己衣登录的一个系统,类似于钓鱼.如用户当前已经登录了邮箱,或bbs,同时用

SameSite Cookie,防止 CSRF 攻击

因为 HTTP 协议是无状态的,所以很久以前的网站是没有登录这个概念的,直到网景发明 cookie 以后,网站才开始利用 cookie 记录用户的登录状态.cookie 是个好东西,但它很不安全,其中一个原因是因为 cookie 最初被设计成了允许在第三方网站发起的请求中携带,CSRF 攻击就是利用了 cookie 的这一"弱点",如果你不了解 CSRF,请移步别的地方学习一下再来. 当我们在浏览器中打开 a.com 站点下的一个网页后,这个页面后续可以发起其它的 HTTP 请求,根据

切记ajax中要带上AntiForgeryToken防止CSRF攻击

在程序项目中经常看到ajax post数据到服务器没有加上防伪标记,导致CSRF被攻击,下面小编通过本篇文章给大家介绍ajax中要带上AntiForgeryToken防止CSRF攻击,感兴趣的朋友一起学习吧 经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.AntiForgeryToken()会生成一对加密的字符串,分别存放在Cookies 和 in

Web安全之CSRF攻击

CSRF是什么? CSRF(Cross Site Request Forgery),中文是跨站点请求伪造.CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的. 举个例子 简单版: 假如博客园有个加关注的GET接口,blogUserGuid参数很明显是关注人Id,如下: http://www.cnblogs.com/mvc/Follow/FollowBlogger.aspx?blogUse

MVC 应用免受 CSRF攻击

保护ASP.NET 应用免受 CSRF 攻击 CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF.CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很

[转]关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF. 二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. 三.CSRF漏洞现状 CSRF这

浅谈CSRF攻击方式

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF. 二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. 三.CSRF漏洞现状 CSRF这