在写后端代码时,公司的自动检测对某个方法报了如下警告:
发现了潜在的 XSS。它可用于在客户端的浏览器中执行不需要的JavaScript
易受攻击的代码:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {String input1 = req.getParameter("input1");......resp.getWriter().write(input1);
}
如何避免这种情况:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {String input1 = req.getParameter("input1");......resp.getWriter().write(Encode.forHtml(input1));
}
Encode.forHtml 方法就是对 html 的元素做转义,比如 < 转义为 < 等
一时兴起了解了一下 xss 的相关概念,防御 xss 攻击通常需要考虑 4 种情况: HTML、JavaScript、CSS(样式)和 URL
Xss 即(Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行
恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。而由于直接在用户的终端执行,恶意代码能够直接获取用户的信息,或者利用这些信息冒充用户向网站发起攻击者定义的请求
XSS 有以下几种分类:
我们可以从 XSS 攻击的两个过程中去防御:
1,攻击者提交恶意代码
2,浏览器执行恶意代码