WEB安全整理- xss与csrf的区别

原理分析

XSS

XSS原理上利用的是浏览器可以拼接成任意的javascript,然后黑客拼接好javascript让浏览器自动地给服务器端发出多个请求(get、post请求)。

XSS分为存储、反射、dom型。是一种代码注入,浏览器没有智商,你输入一个<script>标签或者<a>标签只要浏览器访问到了,可以是贴吧留言甚至是url中的构造,浏览器上他无法辨别这是html标签还是单纯的文字语义,他都是当代码进行执行了。自己构造一段浏览器的恶意代码,那就是为所欲为,危害很大!

例子:

假如微博昵称存在XSS漏洞,你修改昵称

Jack<script>followme()</script>

别人访问你的微博主页是http://weibo.com/Jack后,上面的脚本自动执行,自动成为你的粉丝。

注意上面加黑加粗的字体, xss是发起攻击的用户构造,被攻击的用户访问,服务器只是中转内容(锅还是服务器的,未做过滤)

CSRF

CSRF原理上利用的是网站服务器端所有参数都是可预先构造的原理,然后黑客拼接好具体请求url,可以引诱你提交他构造好的请求。总的来说就是伪造请求,浏览器发出了违背用户意愿(用户是被诱导的完全不知道)的请求,例如转发微博,添加管理员,修改资料等等。

CSRF是过分信任用户的一种行为,一般执行起来非常严格。

通俗的举个例子:

用户被诱导点击了性感漂亮小姐姐图片,然后访问到:www.weibo.com/hehe/deletepage=30&userid=10284

好了10284用户的id=30号的文章就被删除掉了,你没有插入任何恶意代码,你只是调用了网站url,好了你就完成了一次未经授权的删帖操作,这个链接伪造请求的攻击者是观察出来的,这是核心。而且局限性很大,你必须要能访问到被攻击者的cookie访这个url才管用,通俗点说就是被攻击者在看自己的微博点击这个链接才会生效,这就是上面所说的局限性,CSRF攻击在实现过程中是非常有条件的,需要在特定条件下,执行特定操作才会触发

总结

xss可以把攻击盗比喻为偷, csrf可以把攻击者比喻为骗

XSS: 城门已破(服务器未过滤用户输入),黑客携带各种武器在城内为所欲为
CSRF:城门未破,黑客仅能借用户的通行令牌进入城内做小偷小摸的事

从本质上讲,XSS是HTML的问题(过于相信用户,对用户输入未做过滤)。CSRF是HTTP的问题。XSS是内容没有过滤导致网站所有用户的浏览器将攻击者的输入当代码执行。CSRF则是因为浏览器在发送HTTP请求的时候会自动带上cookie,而一般网站的session都存在cookie里面。

这俩也能结合起来,比如A网站有XSS的问题,B网站有CSRF的问题,那么攻击者可以在A里插入代码,当你访问A的时候,你在B网站上的信息就被盗用了。

本文98%的内容摘录自如何用简洁生动的语言说明 XSS 和 CSRF 的区别?, 仅做整理学习使用,如有侵权请联系删除

发表评论

电子邮件地址不会被公开。 必填项已用*标注