互联网正常工作流程: 张三被捕 但是如果有漏洞被XSS攻击: 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是让用户在不知情的情况,冒用其身份发起了一个请求: CSRF是跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性。 黑客:老朋友呀,这个网址里面有你的高中合影哎? 你:真的啊,我看看 。 黑客:哈哈,你的靶场被我种了一颗瓜了~ 你:不会吧,你怎么做到的? 黑客:你是不是点击了网址? 你:靠,这也会中招啊 ! XSS本质是Html注入,和SQL注入差不多。 小偷也是根据这个原理,输入一个有特殊语义的名字,被其他客户端识别为指令,从而完成了一次漂亮的存储型XSS注入攻击。
你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
SQL、Html、人类语言都是指令和数据混在一起,都存在注入风险(程序根据分隔符、标签识别指令和数据,人类则是根据语境、语义和日常经验判断)。比如注册用户时,用户输入“张三”并提交,服务端会生成“ <p>欢迎新用户,张三</p> ”传给浏览器。如果用户输入"<script>alert('逗你玩')<script>",服务端会生成 “<p>欢迎新用户,<script>alert('逗你玩')<script></p>”,输入内容就会被浏览器识别为指令执行,这就是XSS注入;