网络安全相关
# 常见网络攻击
# XSS 攻击
在写后端代码时,公司的自动检测对某个方法报了如下警告:
发现了潜在的 XSS。它可用于在客户端的浏览器中执行不需要的 JavaScript
易受攻击的代码:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
String input1 = req.getParameter("input1");
......
resp.getWriter().write(input1);
}
1
2
3
4
5
2
3
4
5
如何避免这种情况:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
String input1 = req.getParameter("input1");
......
resp.getWriter().write(Encode.forHtml(input1));
}
1
2
3
4
5
2
3
4
5
Encode.forHtml 方法就是对 html 的元素做转义,比如 < 转义为 < 等
一时兴起了解了一下 xss 的相关概念,防御 xss 攻击通常需要考虑 4 种情况: HTML、JavaScript、CSS(样式)和 URL。可以看到 xss 是针对前端页面的攻击
# XSS 是什么
Xss 即(Cross Site Scripting)中文名称为:跨站脚本攻击。XSS 的重点不在于跨站点,而在于脚本的执行
恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。而由于直接在用户的终端执行,恶意代码能够直接获取用户的信息,或者利用这些信息冒充用户向网站发起攻击者定义的请求
XSS 有以下几种分类:
- 反射型:指的是攻击者在 url 的链接后面的参数中加入恶意攻击代码。当用户打开带有恶意代码的 URL 的时候,网站服务端将恶意代码从 URL 中取出,拼接在 html 中并且返回给浏览器端
- 存储型:主要是将恶意代码上传或存储到服务器中,下次只要受害者浏览包含此恶意代码的页面就会执行恶意代码。上面的示例中,防御的就是储存型的 XSS
我们知道了利用 xss 可以在页面上实现一些奇怪的效果,比如改个样式、输出一些数据等等,那黑客到底可以通过 xss 做什么呢?
- 通过 document.cookie 盗取 cookie 使用 js 或 css 破坏页面正常的结构与样式流量劫持
- Dos攻击:利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应
- 利用 iframe、frame、XMLHttpRequest 或上述 Flash 等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作
- 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动
- DOS(拒绝服务)客户端浏览器。钓鱼攻击,高级的钓鱼技巧
- 劫持用户 Web 行为,甚至进一步渗透内网
- 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据
# Xpath 注入
XPath 是一种用来在内存中导航整个 XML 树的语言,它使用路径表达式来选取 XML 文档中的节点或者节点集。你可以将它理解成查询 XML 文件的 SQL,Xpath 注入也与 SQL 注入类似,如下图,传入类似 ’ or 1=1 or ”=’ 的值,将返回所有用户的列表

对于此类的注入,参数化查询是不错的选择,将需要构建的 XPath 查询表达式,以变量的形式表示,变量不是可以执行的脚本
# 如何防御 XSS
我们可以从 XSS 攻击的两个过程中去防御:
1,攻击者提交恶意代码
- 对输入的内容诸如
最后更新: 1/29/2026, 2:49:27 AM