CSRF的攻击与防范

CSRF 是什么?

Cross-site request forgery 跨站请求伪造,也被称为 “one click attack” 或者 session riding,通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利用。CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。

CSRF 攻击类似 XSS 攻击,都是在页面中嵌入特殊部分引诱或强制用户操作从而得到破坏等的目的,区别就是迫使用户 访问特定 URL / 提交表单 还是执行 javascript 代码。

为什么叫 跨站请求 攻击?

从字面意思就可以理解:当你访问 fuck.com 黑客页面的时候,页面上放了一个按钮或者一个表单,URL/action 为http://you.com/delete-myself,这样引导或迫使甚至伪造用户触发按钮或表单。

在浏览器发出 GET 或 POST 请求的时候,它会带上 you.com 的 cookie,如果网站没有做 CSRF 防御措施,那么这次请求在 you.com 看来会是完全合法的,这样就会对 you.com 的数据产生破坏。

CSRF 攻击的对象

在讨论如何抵御 CSRF 之前,先要明确 CSRF 攻击的对象,也就是要保护的对象。从以上的例子可知,CSRF
攻击是黑客借助受害者的 cookie 骗取服务器的信任,但是黑客并不能拿到 cookie,也看不到 cookie
的内容。另外,对于服务器返回的结果,由于浏览器同源策略的限制,黑客也无法进行解析。

因此,黑客无法从返回的结果中得到任何东西,他所能做的就是给服务器发送请求,以执行请求中所描述的命令,在服务器端直接改变数据的值,而非窃取服务器中的数据。

所以,我们要保护的对象是那些可以直接产生数据改变的服务,而对于读取数据的服务,则不需要进行CSRF 的保护。

比如银行系统中转账的请求会直接改变账户的金额,会遭到 CSRF攻击,需要保护。而查询余额是对金额的读取操作,不会改变数据,CSRF 攻击无法解析服务器返回的结果,无需保护。

如何防止 CSRF ?

CSRF 主流防御方式是在后端生成表单的时候生成一串随机 token ,内置到表单里成为一个字段,同时,将此串 token 置入 session 中。

每次表单提交到后端时都会检查这两个值是否一致,以此来判断此次表单提交是否是可信的。提交过一次之后,如果这个页面没有生成 CSRF token ,那么 token 将会被清空,如果有新的需求,那么 token 会被更新。

攻击者可以伪造 POST 表单提交,但是他没有后端生成的内置于表单的 token,session 中有没有 token 都无济于事。

最后

Django推荐放入请求头的token对应的key为 ‘X-CSRFtoken‘  # 如果key加了下划线会提示非法,非法的原因是django内部机制,它会将‘X-CSRFtoken‘ 改为HTTP_X-CSRFTOKEN

所以ajex提交 格式为:headers:{‘X-CSRFtoken‘: $.cookie(‘xxx‘)}

时间: 2024-10-15 00:59:36

CSRF的攻击与防范的相关文章

CSRF的攻击与防御

CSRF是Web应用程序的一种常见漏洞,其攻击特性是危害性大但非常隐蔽,尤其是在大量Web 2.0技术的应用背景下,攻击者完全可以在用户毫无察觉的情况下发起CSRF攻击.本文将对其基本特性.攻击原理.攻击分类.检测方法及防范手段做一个系统的阐述,并列举攻击实例. 文/H3C攻防团队 1      CSRF漏洞简介 CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权

CSRF的攻击与防御(转)

原文:http://www.h3c.com.cn/About_H3C/Company_Publication/IP_Lh/2012/04/Home/Catalog/201208/751467_30008_0.htm CSRF是Web应用程序的一种常见漏洞,其攻击特性是危害性大但非常隐蔽,尤其是在大量Web 2.0技术的应用背景下,攻击者完全可以在用户毫无察觉的情况下发起CSRF攻击.本文将对其基本特性.攻击原理.攻击分类.检测方法及防范手段做一个系统的阐述,并列举攻击实例. 文/H3C攻防团队

【系统安全性】二、Web攻击与防范

二.Web攻击与防范 1.XSS攻击 跨站脚本攻击(Cross Site Scripting),因为简写CSS,与层叠样式表(Cascading Style Sheets)有歧义,所以取名XSS 原理:在网页中嵌入恶意脚本程序,在客户端浏览器执行(如用户输入数据转换成代码执行) 防范:输入数据HTML转义处理(主流框架默认支持) 2.注入攻击 原理:SQL伪装成HTTP请求参数 例如一个登录操作,输入帐号密码 假设后台的Sql是这样拼装的:Select * from user where use

.NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理

通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面的处理. 通过这些安全功能,可以生成安全可靠的 ASP.NET Core 应用.而我们这一章就来说道说道如何在ASP.NET Core中处理"跨站请求伪造(XSRF/CSRF)攻击"的,希望对大家有所帮助! 本文已收录至<.NET Core实战项目之CMS 第一章 入门篇-开篇及总体

Web攻防系列教程之跨站脚本攻击和防范技巧详解

Web攻防系列教程之跨站脚本攻击和防范技巧详解[XSS] 收藏:http://www.rising.com.cn/newsletter/news/2012-04-25/11387.html 来源:瑞星 2012-04-25 14:33:46 摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性 以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了 有针对性的具体

XSS攻击与防范

1.什么是XSS攻击 XSS攻击,跨站脚本攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的. xss攻击,就是给form表单的项目里边填写一些html.css.js等脚本代码,这些代码就会被收集到数据库里边,当对应的内容展示的时

DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)

最近花了点时间把<破坏之王-DDOS攻击与防范深度剖析>看了一遍,坦白来说,这本书比较浅显,可以说是入门书,当然对于我这种对DDOS一知半解的人来说,也是一本不错的书,起码我学到了一些东西. DDOS是分布式拒绝服务(Distributed Denial of Service, DDOS)的简写,从名字可以看出,其攻击是分布式的,即多台(可能上万台,甚至更多)电脑同时对目标进行攻击,攻击的目的是让目标无法提供服务.从根本上来说,让目标无法提供服务,办法有很多,比如侵入目标服务器,删除关键服务或

如何防止ASP.NET网站遭受CSRF的攻击

转载地址: http://www.cnblogs.com/shanyou/p/5038794.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF.CSRF(Cross Site Request Forger

Cookie攻击和防范链接整理

cookie攻击:http://wenku.baidu.com/link?url=i87lAE4bDM-Gw_kpgROhAonTQZtSTGczXvxWdtl8j4rRt20Nmox5enbajpG__8uHWDoCmA_FSO0xP9VQBWoVCnCqNrUhkZFq0A5ACvJxDTa 解析Cookie欺骗实现过程及具体应用:http://wenku.baidu.com/view/d0eee87101f69e31433294ec.html Cookies攻击与防范:http://wen