一、XSS概念及原理
XSS (Cross Site Script),跨站脚本攻击。它是指恶意攻击者往web页面里插入html代码,当用户浏览该页时,
嵌入其中的html代码会被执行,从而达成恶意用户的特殊目的。

二、XSS危害
XSS攻击的危害包括:1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料4、非法转账5、强制发送电子邮件6、网站挂马7、控制受害者机器向其它网站发起攻击
三、XSS攻击类型
XSS可以分为两种类型:    持久型和非持久型根据数据流向又可以分为三种攻击类型:    反射型XSS攻击    存储型XSS攻击    
DOMBasedXSS(基于dom的跨站点脚本攻击)
3.1反射型XSS攻击
反射型数据流向是:浏览器——>后端——>浏览器
下面例子:一个项目功能:如果登录界面输入错误——>打印输入用户名登录失败login.jsp <!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><
title>登录</title></head><body><form action="/ssmdemo/login/login" method="post">
用户名:<input name="username" type="text">密码:<input name="password" type="password"
><input type="submit" value="登录"></form></body></html>登录失败页面fail.jsp <html><head
><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>
Insert title here</title></head><body><p id="p">${username }登录失败</p></body><
script type="text/javascript">var p = document.getElementById("p").innerHTML;
alert(p);</script></html>开始演示打开tomcat输入:
http://localhost:8080/ssmdemo/jsp/login/login.jsp
<http://localhost:8080/ssmdemo/jsp/login/login.jsp>
输入攻击代码<script>alert("你被XSS攻击了!")</script>,点击登录,会弹出我们的攻击弹窗再弹出我们想要的弹窗
其实你可以不弹窗,只要能把攻击代码写入html里就代表XSS攻击成功了。
3.2存储型XSS攻击
存储型数据流向是:浏览器——>后端——>数据库——>后端——>浏览器
攻击者将代码通过表单提交的方式,将攻击代码写入数据库,当用户浏览页面的时候,数据库里的信息显示在页面,攻击代码执行,
所有浏览到该页面数据的用户都会被XSS攻击,比如我申请一个报销单,报销单选项备注输入攻击代码,攻击代码被写入数据库,当对方审核时看到这条消息,攻击代码被执行,浏览到攻击代码的用户被XSS攻击。
3.3DOMBasedXSS(基于dom的跨站点脚本攻击)
DOM-XSS 的数据流向是:URL-->浏览器 
xss.php

* <?php  
* error_reporting(0); //禁用错误报告  
* $name = $_GET["name"];  
* ?>  
* <input id="text" type="text" value="<?php echo $name;?>" />  
* <div id="print"></div>  
* <script type="text/javascript">  
* var text = document.getElementById("text");   
* var print = document.getElementById("print");  
* print.innerHTML = text.value; // 获取 text的值,并且输出在print内。这里是导致xss的主要原因。  
* </script>  
能打印这个,不是可以打印cookie?所以不要以为这个攻击没有用了
四、XSS防范
我们经常用<script>alert(1)</script>检测是不是有XSS漏洞,一旦弹出了1就说明有,那么我们该如何防范呢?
1.对用户输入进行检查,检查敏感字符,替换敏感字符2.后端对输入参数进行过滤,过滤敏感字符,替换敏感字符

ps:不是说这样就安全了,我可以插入的可不只是js,还有其他html标签如<a>,还可以插入属性如onclick="",还可以利用URL的锚#让浏览器不向服务器说明写入请求头Referer字段中,骗过服务器。所以最好的做法其实是
利用token技术。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信