XSS攻击分为三种类型:
- 存储型
- 反射型
- DOM 型
存储型:访问网站出发XSS。
黑客攻击流程:
反射型:
访问携带XSS脚本的连接,触发XSS
原理解析:获取参数后 ,直至输出到客户端,触发xss
服务端代码:
@WebServlet(urlPatterns = "/xssServlet") public class XSSServlcet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name = req.getParameter("name"); req.setAttribute("name", name); req.getRequestDispatcher("index.jsp").forward(req, resp); } }
DOM型:
访问携带XSS脚本的链接,触发XSS。特征和反射型一样,同样通过onerror触发。
js代码:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/socket.js"></script> <title>无标题文档</title> </head> <script language="javascript"> </script> <body> <table> errorMsg:<span id="errorMsg"></span> </table> <script> window.onload = function(){ var errorMsg = location.hash.substring(1); document.getElementById('errorMsg').innerHTML = decodeURIComponent(errorMsg); } </script> </body> </html>
总结:
XSS类型 | 存储型 | 反射型 | DOM型 |
触发过程 | 1.黑客构造XSS脚本 2.正常用户访问 |
正常用户范文携带XSS脚本的URL | 正常用户访问携带XSS脚本的URL |
数据存储 | 数据库 | URL | URL |
谁来输出 | 后端WEB应用程序 | 后端WEB应用程序 | 前端JS |
输出位置 | HTTP响应中 | HTTP响应中 | 动态构造的DOM节点 |