您好,登录后才能下订单哦!
这篇文章主要介绍“XSS攻击有哪几种形态”,在日常操作中,相信很多人在XSS攻击有哪几种形态问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”XSS攻击有哪几种形态”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、非持久形
什么是非持久形呢?最通俗易懂的说法就是 每当进行攻击时 要手动进行注入
例子:
#该文件为form.html 其中包含form表单准备提交至 form.php <form action="/form.php" method="post"> <input type="text" value="" name="param"> <input type="submit"> </form> #该文件为form.php <?php $param = $_GET['param']; echo "您好,{$param}!"; ?> #映射关系 客户端(浏览器)->服务器端->客户端(浏览器)
····如果我们在param字段中填写正常的字符串 param=张三
结果则会输出 “您好,张三”;
····但如果非正常字符串 param=<script>window.location.href="https://www.baidu.com"</script>
结果则不会按照我们的预想一样 正常输出并停留在该页面 当php直接输出直接用户提交的param参数时
其中的script标签中的内容就会被浏览器解析 从而导致页面被js脚本重定向至百度首页
这就是一个最简单的非折射性XSS攻击的示例了
2、持久形
上面我们说过了非持久形,那么持久形与其刚好相反。不需要每次攻击都进行手动注入,而是通过系统某个注入点进行攻击。将攻击的内容存储在 数据库、内存、缓存之中。最经典的例子就是通过留言板进行注入。
#这是 guestbook.html <form action="/guestbook.php" method="post"> 姓名:<input type="text" name="name"><br> 年龄:<input type="text" name="age"><br> 内容:<input type="text" name="content"><br> </form> #这是 guestbook.php <?php #假设存在 guestbook表 $name = $_POST['name']; $age = $_POST['age']; $content = $_POST['content']; $con=mysqli_connect("localhost","user","password","database"); mysqli_query($con,"INSERT INTO xss(name, age, content) VALUES ($name,$age,$content)"); #此时 如果用户提交的内容是一些js脚本 我们不加过滤 那么信息就会直接储存到我们的数据库中 #此时并没有造成影响 一旦该留言 在前端留言页面被读取展示 其中的JS就会被浏览器解析 从而达到 不管是谁访问留言板页面 #都会直接执行该JS代码 从而对我们的网站造成影响 #映射关系 客户端(浏览器)->服务器(php数据入库)->数据库(储存)->服务器(php读取数据)->客户端(渲染在浏览器端) ?>
3、DOM形
DOM形 不需要服务器端参与 仅通过DOM树即可完成
<script> #获取URL的锚部分(从 # 号开始的部分) 例如:https://www.baidu.com#abc eval(decodeURI(location.hash.substr(1))) #js的eval函数具有极大安全隐患 如果我在地址栏输入 https://www.baidu.com#https://www.abc.com/xss.js #那么js就会直接读取https://www.abc.com/xss.js的内容 一旦xss.js中包含恶意代码 那么我们的网站就会收到影响 #映射关系 客户端(仅通过客户端 无需服务器端处理) </script>
到此,关于“XSS攻击有哪几种形态”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。