什么是XSS
全称:Cross Site Script(跨站脚本)
为了与层叠样式表css区分,将跨站脚本简写为XSS
危害:盗取用户信息、钓鱼、制造蠕虫等。
概念
概念:黑客通过“HTML注入”篡改了网页,插入了恶意脚本,从而在用户在浏览网页时,实现控制用户浏览器行为的一种攻击方式。
黑客可以利用xss盗取用户的cookie,有了用户的cookie,可以以用户的身份来正常访问站点。
XSS属于客户端代码注入,通常注入代码是JavaScript。区别于命令注入,SQL注入属于服务端代码注入。
示例
假设一个页面把用户输入的参数直接输出到页面上,php代码如下:
<?php
$input = $_GET['param'];
echo "<div>".$input."</div>";
?>
正常情况下,用户向param提交的数据会展示在页面中,如
http://localhost/test.php?param=this is a test!
但是,如果提交一段js代码
http://localhost/test.php?param=<script>alert(/xss/)</script>
会看到js代码在当前页面执行了
这只是一个简单的例子,XSS攻击还有一些其它的形式。
XSS分类
XSS根据效果的不同,可以分为存储型XSS、反射型XSS,DOM型XSS。
存储型
攻击代码在服务器端(数据库),输出在http响应中。
比较常见的场景是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后,所有访问该博客的用户,都会在他们的浏览器中执行这段恶意js代码。
反射型
攻击代码在URL里,输出在http响应中。黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。
DOM型
从效果上来说,也属于反射型XSS。
攻击代码在URL里,输出在DOM节点中。
不同类别之间的区别
实战
环境准备
phpstudy
MySQL中root用户默认密码root
DVWA
DVWA(Damn Vulnerable Web Application)是一个用PHP编写的用来进行安全脆弱性鉴定的PHP/MySQL Web