文章目录

  • 不安全的 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() {}
}

Springboot -- 网络安全漏洞处理相关推荐

  1. 信息安全工程师笔记-网络安全漏洞防护技术原理与应用

    网络安全漏洞概念 根据漏洞的补丁情况,漏洞分为: ①普通漏洞:相关漏洞信息已经广泛公开,安全厂商已经有了解决修补方案: ②零日漏洞(zero-day vulnerability):指系统或软件中新发现 ...

  2. 信安教程第二版-第13章网络安全漏洞防护技术原理与应用

    第13章 网络安全漏洞防护技术原理与应用 13.1 网络安全漏洞概述 243 13.1.1 网络安全漏洞概念 243 13.1.2 网络安全漏洞威胁 243 13.1.3 网络安全漏洞问题现状 244 ...

  3. 网络安全漏洞管理十大度量指标

    当前,网络安全漏洞所带来的风险及产生的后果,影响到网络空间乃至现实世界的方方面面,通信.金融.能源.电力.铁路.医院.水务.航空.制造业等行业各类勒索.数据泄露.供应链.钓鱼等网络安全攻击事件层出不穷 ...

  4. 政府安全资讯精选 2017年第十二期 中国网络安全漏洞披露平均效率远超美国; 美国美国国土安全部发布指令,要求联邦机构强化Web和电子邮件安全...

    [国内政策分析] 安徽合肥开出首张<网络安全法>罚单 点击查看原文 概要:合肥市公安局高新分局对某企业的门户网站被植入木马病毒的案件进行调差.同时,对该单位网络安全负责人和负责维护合肥某信 ...

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

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

  6. 常见而又容易被中小企业忽视的六个网络安全漏洞

    By Jeffrey - 资深IT经理人,IT运营和安全顾问,历任多家知名跨国企业包括麦肯锡大中华区.通用电气公司.壳牌石油.英美烟草等公司IT总经理 不仅仅是对于大型知名企业,对于各种规模的公司来说 ...

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

    提示:编制医疗器械网络安全漏洞自评报告要点解析 文章目录 1. 目的 2. 引用文件 3. CVSS漏洞等级 3.1 概述 3.1.1 适用范围说明 3.1.2 CNNVD-ID定义 3.1.3 编码 ...

  8. 最广泛使用的服务器软件爆出网络安全漏洞

    软件代码有严重缺陷,从企业到国防部都可能被骇- 网络安全研究人员表示,服务器软件「Log4j」藏有程序漏洞,是近年来发现的一个最大信息安全风险. 服务器爆出网络安全漏洞 世界各地的政府与企业上周末赶紧 ...

  9. 计算机网络安全专业论文题目,系统类有关计算机专业论文题目,关于计算机网络安全漏洞防范措施相关毕业论文格式...

    这篇系统论文范文属于程序设计免费优秀学术论文范文,系统类有关毕业论文格式,与计算机网络安全漏洞防范措施相关计算机专业论文题目.适合系统及安全漏洞及漏洞方面的的大学硕士和本科毕业论文以及系统相关开题报告 ...

最新文章

  1. R使用lm构建多变量线性回归模型
  2. Springbooot集成Shiro简单使用
  3. Web框架 — Flask
  4. java Calendar 小时值得到24进制格式
  5. linux不识别xfs,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  6. Chrome浏览器截取全屏(无需安装任何插件)
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_6-01 微服务网关介绍和使用场景
  8. 软件功能个性定制思维顺序
  9. 20190910每日一句 你有勇气直面自己的恐惧吗?
  10. 远程重启h3c路由器_H3C路由器简单命令
  11. 我与忠和资本的未结之缘
  12. 初中OJ1998【2015.8.3普及组模拟赛】饥饿的WZK(hunger)
  13. 在线教育数据分析实战项目案例
  14. Windows Mobile 7.0最新消息!!
  15. 谣言检测相关论文阅读笔记:PAKDD2020-SAFE: Similarity-Aware Multi-Modal Fake News Detection
  16. 【kafka专栏】使用shell脚本快速搭建kafka单机版(含视频)
  17. java西语_使用Java 8 DateTimeFormatter和西班牙语月份名称进行解析
  18. Java代码审计前置知识——Spring框架AOP和IoC
  19. 同一个局域网之内,如何远程控制对方的电脑而且不用对方同意
  20. 达梦数据库DM7数据过滤迁移,达梦数据库导入导出

热门文章

  1. 重庆专科计算机专业学校哪个最好,重庆十大大专排名(含分数线2021年参考)-重庆最好的全日制专科学校...
  2. 云平台管理难?看牛盾云管家是如何一键解决的…
  3. 故事也许不只是故事,内中蕴含着大…
  4. cn_win_srv_2003_r2_standard_with_sp2_vl_cd1_X13-46532.iso 序列号密匙
  5. mysql executequery返回值_statement.executeQuery(sql)
  6. M.U.G.E.N Error怎么办
  7. 【3dsmax】20180904基础知识整理(3)
  8. 七年级的专用计算机,七年级下册计算机抽考题:
  9. 网达科技和鸿蒙,鸿蒙是否真实存在?
  10. 关于H5强制刷新页面