如何用漫画说明 XSS 和 CSRF 的区别?发布时间:2020/8/21 17:45:35 阅读次数:

  

互联网正常工作流程:

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

张三被捕

但是如果有漏洞被XSS攻击:

2.1.jpg

3.jpg

2.2.jpg

2.3.jpg

XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

简单来说

1. 正常用户 A 提交正常内容,显示在另一个用户 B 的网页上,没有问题。

2. 恶意用户 H 提交恶意内容,显示在另一个用户 B 的网页上,对 B 的网页随意篡改。

造成 XSS 有几个要点:

1. 恶意用户可以提交内容

2. 提交的内容可以显示在另一个用户的页面上

3. 这些内容未经过滤,直接运行在另一个用户的页面上


csrf是让用户在不知情的情况,冒用其身份发起了一个请求:

3.1.jpg

CSRF是跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性。
你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

黑客:老朋友呀,这个网址里面有你的高中合影哎?

你:真的啊,我看看 。

黑客:哈哈,你的靶场被我种了一颗瓜了~

你:不会吧,你怎么做到的?

黑客:你是不是点击了网址?

你:靠,这也会中招啊 !


XSS本质是Html注入,和SQL注入差不多。
SQL、Html、人类语言都是指令和数据混在一起,都存在注入风险(程序根据分隔符、标签识别指令和数据,人类则是根据语境、语义和日常经验判断)。比如注册用户时,用户输入“张三”并提交,服务端会生成“ <p>欢迎新用户,张三</p> ”传给浏览器。如果用户输入"<script>alert('逗你玩')<script>",服务端会生成 “<p>欢迎新用户,<script>alert('逗你玩')<script></p>”,输入内容就会被浏览器识别为指令执行,这就是XSS注入;

小偷也是根据这个原理,输入一个有特殊语义的名字,被其他客户端识别为指令,从而完成了一次漂亮的存储型XSS注入攻击。