Springboot -- 网络安全漏洞处理

article/2025/9/22 11:12:48

文章目录

    • 不安全的 HTTP 方法以及 Nginx 屏蔽版本号显示
      • 说明
      • 检测方式
      • 不安全的 HTTP 方法 处理代码
      • 屏蔽 Nginx 版本号显示
    • 点击劫持漏洞
      • 说明
      • 什么是ClickJacking
      • 检测方式
      • 处理代码
    • XSS跨站脚本攻击
      • 说明
      • 检测方式
      • 处理代码 (参考网上的代码,主要是对传入的信息进行敏感字符的过滤)

不安全的 HTTP 方法以及 Nginx 屏蔽版本号显示

说明

Web服务器在默认情况下开放了一些不必要的HTTP方法(如OPTIONS,DELETE、PUT、TRACE、MOVE、COPY),增加了受攻击的几率,所以对于我们不需要使用的HTTP方法,要做出尽量限制,避免非法访问的发生。

以 OPTIONS 为例:
其主要用途包括:
1、获取服务器支持的HTTP请求方法;也是黑客经常使用的方法。
2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。

检测方式

  • 随便挑选一个开发接口,例如我们选取一个用 GET 方式请求的接口。
  • 将请求方式修改为 OPTIONS
  • 查看响应结果
    在这里插入图片描述
    以上的响应结果其实暴露出两个问题:
    1、不安全的 HTTP 方法
    2、nginx 不应该显示版本号

不安全的 HTTP 方法 处理代码

修改 Springboot 内置 Tomcat 的配置

@Configuration
public class TomcatConfig {@Beanpublic ServletWebServerFactory servletContainer() {TomcatServletWebServerFactory tomcatServletContainerFactory = new TomcatServletWebServerFactory();tomcatServletContainerFactory.addContextCustomizers(new TomcatContextCustomizer(){@Overridepublic void customize(Context context) {SecurityConstraint constraint = new SecurityConstraint();SecurityCollection collection = new SecurityCollection();//http方法collection.addMethod("PUT");collection.addMethod("DELETE");collection.addMethod("HEAD");collection.addMethod("OPTIONS");collection.addMethod("TRACE");//url匹配表达式 所有路径collection.addPattern("/*");constraint.addCollection(collection);//设置以上HTTP方法在指定路径下需要身份验证约束constraint.setAuthConstraint(true);context.addConstraint(constraint );//设置使用httpOnlycontext.setUseHttpOnly(true);}});return tomcatServletContainerFactory;}
}

屏蔽 Nginx 版本号显示

  • 打开 nginx 主配置文件添加属性:
http {server_tokens off;
}
server {server_tokens off;
}

点击劫持漏洞

说明

查看HTTP响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个iframe中的页面。
防止服务器响应头信息中没有X-Frame-Options,从而存在ClickJacking攻击的风险。

什么是ClickJacking

点击劫持(用户界面补救攻击,UI补救供给,UI攻击)是一种恶意技术,他通过诱骗 Web 用户点击与用户认为他们正在点击的内容不同的东西,从而可能泄露机密信息或控制他们的计算机,同时点击看似无害的网页。
点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

检测方式

使用AWVS,我使用的版本是 10.5 ,安装后登录网页 localhost:8183,配置如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
查看结果:
显示 X-Frame-Options 响应头丢失
在这里插入图片描述

处理代码

@Component
public class IdentityInterceptor extends HandlerInterceptorAdapter
{....../*** 在业务处理器处理请求执行完成后,生成视图之前执行的动作 可在modelAndView中加入数据,比如当前时间*/@Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception{//网络安全要求 增加 x-frame-options 响应头 防止ClickJacking攻击response.addHeader("x-frame-options","SAMEORIGIN");}......}

若是服务由Nginx转发,还需要修改Nginx配置

http{add_header X-Frame-Options SAMEORIGIN;
}

或者

server{add_header X-Frame-Options SAMEORIGIN;
}

XSS跨站脚本攻击

说明

跨站脚本是一种经常出现在web应用程序中的计算机安全漏洞,是由于web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中加入HTML\JS代码,未加编码地输出到第三方用户浏览器,恶意攻击者可以利用JS、activeX、html语言甚至flash应用的漏洞,发送恶意代码给另一个用户,因为浏览器无法识别脚本是否可信,从而跨站漏洞脚本便运行并让攻击者获取其他用户信息。

取自百度百科的举例:
用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。有关攻击方法的详细情况将在下面阐述。

检测方式

在AWS中检测:
在这里插入图片描述

处理代码 (参考网上的代码,主要是对传入的信息进行敏感字符的过滤)

public final class HttpRequestWrapper extends HttpServletRequestWrapper {private Map<String, String> xssMap;public HttpRequestWrapper(HttpServletRequest request) {super(request);}public HttpRequestWrapper(HttpServletRequest request,Map<String, String> xssMap) {super(request);this.xssMap = xssMap;}@Overridepublic String[] getParameterValues(String parameter) {String[] values = super.getParameterValues(parameter);if (values == null) {return null;}int count = values.length;// 遍历每一个参数,检查是否含有String[] encodedValues = new String[count];for (int i = 0; i < count; i++) {encodedValues[i] = cleanXSS(values[i]);}return encodedValues;}@Overridepublic String getParameter(String parameter) {String value = super.getParameter(parameter);if (value == null) {return null;}return cleanXSS(value);}public String getHeader(String name) {String value = super.getHeader(name);if (value == null)return null;return cleanXSS(value);}/*** 清除恶意的XSS脚本* * @param value* @return*/private String cleanXSS(String value) {Set<String> keySet = xssMap.keySet();for(String key : keySet){String v = xssMap.get(key);value = value.replaceAll(key,v);}return value;}
}

/*** 防止 XSS 跨站脚本攻击*/
@Component
public class XSSFilter implements Filter {// XSS处理Mapprivate static Map<String,String> xssMap = new LinkedHashMap<String,String>();public void init(FilterConfig filterConfig) throws ServletException {// 含有脚本:scriptxssMap.put("[s|S][c|C][r|R][i|C][p|P][t|T]", "");// 含有脚本 javascriptxssMap.put("[\\\"\\\'][\\s]*[j|J][a|A][v|V][a|A][s|S][c|C][r|R][i|I][p|P][t|T]:(.*)[\\\"\\\']", "\"\"");// 含有函数: evalxssMap.put("[e|E][v|V][a|A][l|L]\\((.*)\\)", "");// 含有符号 <xssMap.put("<", "&lt;");// 含有符号 >xssMap.put(">", "&gt;");// 含有符号 (xssMap.put("\\(", "(");// 含有符号 )xssMap.put("\\)", ")");// 含有符号 'xssMap.put("'", "'");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// 强制类型转换 HttpServletRequestHttpServletRequest httpReq = (HttpServletRequest)request;// 构造HttpRequestWrapper对象处理XSSHttpRequestWrapper httpReqWarp = new HttpRequestWrapper(httpReq,xssMap);// chain.doFilter(httpReqWarp, response);}public void destroy() {}
}

http://chatgpt.dhexx.cn/article/tMpNdMR4.shtml

相关文章

网络安全实验3 漏洞扫描

赞赏码 & 联系方式 & 个人闲话 【实验名称】漏洞扫描 【实验目的】 1.熟悉X-Scan工具的使用方法&#xff1b; 2.熟悉FTPScan工具的使用方法&#xff1b; 3.会使用工具查找主机漏洞 4.学会对弱口令的利用 5.了解开启主机默认共享以及在命令提示下开启服务的方法 …

网络安全技能大赛D模块常规漏洞加固详解

一、 说明&#xff1a; 1.所有截图要求截图界面、 字体清晰&#xff1b; 2.文件名命名及保存&#xff1a; 网络安全模块 D- XX&#xff08;XX为工位号&#xff09;&#xff0c; PDF 格式保存&#xff1b; 3.文件保存到 U盘提交。 4.linux 系统 root 密码 123456&#xff1b; 请…

2022年统计的27个网络安全漏洞数据信息

网络安全漏洞通常是指软件代码中允许攻击者访问网络或系统的缺陷。漏洞使企业和个人面临一系列威胁&#xff0c;包括恶意软件和帐户接管。 他们的漏洞利用存在大量可能的漏洞和潜在后果。美国政府的国家漏洞数据库 (NVD)由常见漏洞和暴露 (CVE) 列表提供&#xff0c;目前有超过…

计算机漏洞分几个等级,网络安全漏洞可以分为各个等级,A级漏洞表示?

满意答案 某匪kevin 2013.04.04 采纳率&#xff1a;44% 等级&#xff1a;11 已帮助&#xff1a;5835人 答案时B ----------------分级原则----------- 对漏洞分级有助于在漏洞被发现后&#xff0c;提供用户更多的信息以便于更快的给漏洞定位&#xff0c;并决定下一步采取的措…

网络安全常见漏洞原理及其防御

目录 1.SQL注入 1.1原理 1.2注入演示 1.3防御 1.4 补充 2.xss&#xff08;跨站脚本攻击&#xff09; 2.1 原理 2.2 注入演示 2.3防御 3.csrf&#xff08;跨站点请求伪造&#xff09; 3.1原理 3.2 注入演示 3.3 防御 4.文件上传 4.1原理 4.2 攻击演示 4.3防御 1.…

医疗器械网络安全漏洞自评报告模板

提示&#xff1a;编制医疗器械网络安全漏洞自评报告要点解析 文章目录 1. 目的2. 引用文件3. CVSS漏洞等级3.1 概述3.1.1 适用范围说明3.1.2 CNNVD-ID定义3.1.3 编码原则3.1.4 CNNVD-ID语法介绍 3.2 指标分析3.2.1 基本指标3.2.1.1可用性指标1)攻击向量2)攻击复杂性3)所需权限4…

Web网络安全漏洞分析,SQL注入原理详解

本文主要为大家介绍了Web网络安全漏洞分析SQL注入的原理详解&#xff0c;有需要的朋友可以借鉴参考下&#xff0c;希望能够有所帮助&#xff0c;祝大家多多进步&#xff0c;早日升职加薪 一、SQL注入的基础 1.1 介绍SQL注入 SQL注入就是指Web应用程序对用户输入数据的合法性没…

信息安全技术 网络安全漏洞分类分级指南(GB/T 30279-2020 )

文章目录 前  言1 范围2 规范性引用文件3 术语和定义4 缩略语5 网络安全漏洞分类5.1 概述5.2 代码问题5.3 配置错误5.4 环境问题5.5 其他 6 网络安全漏洞分级6.1 概述6.2 网络安全漏洞分级指标6.3 网络安全漏洞分级方法 附 录 A&#xff08;规范性附录&#…

计算机网络存在的漏洞,常见的计算机网络安全漏洞有哪些

当今的世界呈现网络信息化、网络全球化的发展大趋势。因此&#xff0c;我们应该竭尽全能地享受其带来的优势和便利&#xff0c;让信息网络为人类的生活进行健康服务。同时&#xff0c;我们还应该采取一切措施将各类危害网络信息安全的病毒清扫干净。只有防患于未然&#xff0c;…

信安软考 第十三章 网络安全漏洞防护技术原理

一、网络安全漏洞概述 1.1 网络安全漏洞概念 网络安全漏洞又称为脆弱性&#xff0c;简称漏洞。漏洞一般是致使网络信息系统安全策略相冲突的缺陷&#xff0c;这种缺陷通常被称为安全隐患。安全漏洞的影响主要有机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控性下降、…

网络安全漏洞检测

漏洞检测 任务说明&#xff1a;仅能获取Server3的IP地址 靶机场景&#xff1a;Server3 172.16.101.250 在MSF工具中用search命令搜索MS12020 RDP拒绝服务攻击模块&#xff0c;将回显结果中的漏洞披露时间作为Flag值提交&#xff1b;&#xff08;如&#xff1a;2012-10-16&am…

网络安全常见十大漏洞总结(原理、危害、防御)

一、弱口令【文末福利】 产生原因 与个人习惯和安全意识相关&#xff0c;为了避免忘记密码&#xff0c;使用一个非常容易记住 的密码&#xff0c;或者是直接采用系统的默认密码等。 危害 通过弱口令&#xff0c;攻击者可以进入后台修改资料&#xff0c;进入金融系统盗取钱财…

网络安全常见十大漏洞总结(原理、危害、防御)_网络安全十大漏洞

一、弱口令【文末福利】 产生原因 与个人习惯和安全意识相关&#xff0c;为了避免忘记密码&#xff0c;使用一个非常容易记住 的密码&#xff0c;或者是直接采用系统的默认密码等。 危害 通过弱口令&#xff0c;攻击者可以进入后台修改资料&#xff0c;进入金融系统盗取钱财…

【python】采集每日必看黄色软件数据~

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests re csv 安装模块&#xff1a;win R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内…

HTML5游戏化互动学习平台,h5游戏平台_触摸型互动slg黄油手游

乐趣H5游戏平台是目前中国最大的H5手机网页游戏平台&#xff0c;提供在线玩的H5手机小游戏&#xff0c;最火爆的微信小游戏&#xff0c;最好玩的手机小游戏排行榜&#xff0c;让您能结识到H5游戏玩家和H5小游戏里的朋友&#xff0c;无需下载&#xff0c;点击马上玩&#xff01;…

中国十大最狠的流氓网站曝光!送查杀流氓的工具

推动了流氓软件的发展?谁又从流氓软件中获利,揭开流氓软件背后的始佣者,网易科技独家选出中国十大流氓网站. 以下是网易科技评选的十大流氓网站: 1、3721.com(中文实名) 这个是流氓软件的开山鼻祖,就是因它将中国互联网带入到一个流氓时代,这里就不作再多说,相信大多数人…

注意了!浏览色情网站被短信通知检讨?可能是诈骗!

来源 | 澎湃新闻、九派视频等 针对“网传有学生用校园网浏览色情网站被学校学工部短信通知深刻检讨”一事&#xff0c;9月23日&#xff0c;电子科技大学党委学生工作部相关工作人员告诉记者&#xff0c;已关注到网络上传播的图片&#xff0c;经查&#xff0c;该校学工部未发过此…

宠物网站

宠物网站 文章目录 宠物网站1.宠物网站需求分析2.宠物网站设计3.宠物网站实现1.创建HTML文件2.网页布局设计3.网页布局实现3.1共有部分&#xff1a;3.2.不同的模块&#xff1a;3.2.1.首页页面设计3.2.2.萌宠页面设计3.2.3.萌宠医院页面设计3.2.4萌宠食品页面设计3.2.5萌宠资讯页…

10大免费的白嫖网站

作者&#xff1a;pk哥 来源&#xff1a;Python知识圈 本次给大家分享下 pk 哥常用的 10个白嫖网站。 万能命令 https://wanneng.run/cn/在你浏览任意网页时&#xff0c;在网址前面输入这个万能命令 wn.run/ 就会展示出用于该网页的各种附加在线工具&#xff0c;方便快捷&#x…

刚刚,我顺藤摸瓜端了知名色情网站的老窝,并劝他从良

来自公众号&#xff1a;Hack 感谢凌云给我的启发 大家好&#xff0c;我是九歌 前几天无意发现了一个色情网站&#xff0c;本着除暴安良的心态&#xff0c;直接开始对这个网站开始了调查 这个网站的域名是.cn结尾的 【.cn是国内域名,无法隐藏注册人的信息】 我去站长之家里面对这…