生产上线需要注意的安全点

一、关闭swagger

1、关闭swagger v3

# 需同时设置auto-startup=false,否则/v3/api-docs等接口仍能继续访问
springfox:
  documentation:
    enabled: false
    auto-startup: false
    swagger-ui:
      enabled: false

2、关闭swagger v2

# 只要不是true就不启用
swagger:
  enable: false
# 如不起作用,查看项目中的config,是否配置开关
@Configuration
@EnableSwagger2
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Swagger2 构建RESTful API")
                      .description("API 描述")
                .contact(new Contact("xx", "", "xx@xxx.com"))
                .version("1.0")          
                .build();
    }

}

二、关闭SpringBoot actuator

management.endpoints.enabled-by-default = false

三、HTTP头信息泄露

为了隐藏这些不必要的头信息,有各种可能的方法:
    1.如果是经源代码编译而来的,可改源代码中的版本信息,具有一定的难度;
    2.通过配置对版本信息进行修改或者不显示,达到以假乱真的目的,比较简单;
    3.在服务器前加上反向代理软件,过滤掉这些会显示服务器版本信息的头,有些复杂。

以下主要就第2种方法,分别介绍一下常用的Web服务器如何去掉或修改Server头信息。

1>.Apache Web服务器版本号隐藏

# 找到配置文件apache2.conf或httpd.conf,修改其中的标记为:
ServerTokens ProductOnly
ServerSignature Off

# 重启apache服务
# curl -I localhost
HTTP/1.1 200 OK
Server: Apache
Accept-Ranges: bytes
Content-Length: 97
Connection: close
Content-Type: text/html

2>.Nginx服务器版本号隐藏

# 修改nginx.conf
# 在其中的http节加上server_tokens off;
http {
  ……省略配置
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 65;
  tcp_nodelay on;
  server_tokens off;
  …….省略配置
}
# 重启Nginx后测试

四、敏感信息明文传输

1.网站负责人将网站地址提交到Gworg进行SSL证书认证。

2.然后将SSL证书配置到网站,并且开启强制HTTPS访问。

3.查看网站源码是否存在http地址调用的资源,例如:图片、视频、CSS、JS代码等,将这些代码地址改成https或者下载到本地网站服务器调用。

4.对于敏感信息,例如密码、秘钥进行加密;例如:前端md5加密传给服务端,服务端再次md5加密存入数据库;

五、重放攻击

短信轰炸

暴力破解

重放支付

如何防御

加随机数

加时间戳

加流水号

其他方法

1)挑战/应答:每次数据传输时,发送端都给接收端发送一个不同的“挑战”字串,接收端收到这个“挑战”字串后,做出相应的“应答”。

2)一次性口令:每次数据传输时,发送端都给接收端发送一个不同的“口令”,通信双方通过消息中的口令来判断消息的新鲜性。

3)页面可以编写防重复提交、后端自定义注解防止表单重复提交(RepeatableFilter);


六、敏感信息泄漏

1.不当的日志记录:如果日志文件中包含了敏感数据,比如用户密码、身份证号码等,且这些日志文件未经适当的保护,那么黑客可以随意访问这些文件来获取敏感数据

2.SQL注入攻击:如果应用程序的数据库查询语句是通过拼接字符串的方式构建的,存在SQL注入的风险。黑客可以通过输入特殊字符来修改或者获取数据库中的数据。

3.不正确的加密和解密:如果应用程序使用不安全的加密算法,或者密钥管理不当,黑客可以通过解密数据来获取敏感信息。

解决方案:

1.应用程序层面的解决方案
  a. 合理使用访问控制机制:对敏感数据的访问进行严格的认证和授权,确保只有授权用户能够访问敏感数据。
  b. 数据存储安全:将敏感数据以加密形式存储,确保数据在存储过程中不被黑客获取。
  c. 前端安全:编写安全的前端代码,对用户输入进行有效的验证和过滤,防止恶意代码注入。
  d. 安全的数据传输:使用安全的传输协议(如HTTPS)来传输敏感数据,确保数据在传输过程中不被黑客截取。
2.数据库层面的解决方案
  a. 使用参数化查询或预编译语句:确保输入的数据能够正确转义,防止SQL注入攻击。
  b. 数据库访问控制:对数据库的访问进行严格的认证和授权,只允许授权用户访问敏感数据。
  c. 定期备份和监控数据库:确保数据库备份完整可用,及时发现和处理异常访问行为。
3.加密和解密层面的解决方案
  a. 使用安全可靠的加密算法:确保加密算法足够强大,如AES、RSA等。
  b. 密钥管理:妥善管理密钥,确保密钥不泄露,定期更换密钥以提高安全性。

实战:

XssFilter 过滤sql参数;

七、账号枚举漏洞

1.对接口登录页面的判断回显提示信息修改为一致:账号或密码错误(模糊提示);不要精确报账号不存在、密码错误等提示语。
2.增加动态验证码机制,避免被探测工具批量枚举用户名。

八、CORS 信任任意来源漏洞

1   如果返回头是以下情况,那么就是高危漏洞,这种情况下漏洞最好利用:

Access-Control-Allow-Origin: https://www.attacker.com

Access-Control-Allow-Credentials: true

 2   如果返回头是以下情况,那么也可以认为是高危漏洞,只是利用起来麻烦一些:

Access-Control-Allow-Origin: null

Access-Control-Allow-Credentials: true

 3   如果返回以下,则不存在漏洞,因为Null必须是小写才存在漏洞:

Access-Control-Allow-Origin: Null

Access-Control-Allow-Credentials: true

 4   如果返回以下,可认为不存在漏洞,因为CORS安全机制阻止了这种情况下的漏洞利用,也可以写上低危的CORS配置错误问题。

Access-Control-Allow-Origin: *

Access-Control-Allow-Credentials: true

 5   如果返回以下,可认为不存在漏洞,也可以写上低危的CORS配置错误问题。

Access-Control-Allow-Origin: *

解决办法:

1. Access-Control-Allow-Origin中指定的来源只能是受信任的站点,避免使用Access-Control-Allow-Origin: *,避免使用Access-Control-Allow-Origin: null,否则攻击者可以伪造来源请求实现跨域资源窃取。

2. 严格校验“Origin”值,校验的正则表达式一定要编写完善,避免出现绕过的情况。

3. 减少“Access-Control-Allow-Methods”所允许的请求方法。

4. 除了正确配置CORS之外,Web服务器还应继续对敏感数据进行保护,例如身份验证和会话管理等。

5.后端服务禁止使用下边代码,使用nginx代理配置跨域:

    @Bean
    public CorsFilter corsFilter()
    {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        // 设置访问源地址
        config.addAllowedOrigin("*");
        // 设置访问源请求头
        config.addAllowedHeader("*");
        // 设置访问源请求方法
        config.addAllowedMethod("*");
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

九、未授权访问

【网络安全】常见未授权访问漏洞汇总

十、默认口令漏洞

所有中间件、组件密钥都不得使用默认,修改为复制的随机密码;

后端对新增、修改密钥前,可以加入PasswordCheckUtil,进行复杂校验:

检测密码中字符长度

检查密码中是否包含数字

检查密码中是否包含字母(不区分大小写)

检查密码中是否包含特殊字符

键盘规则匹配器 横斜向规则检测

评估a-z,z-a这样的连续字符

评估aaaa, 1111这样的相同连续字符

检测常用词库

用户名校验(LeetSpeak字符)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/228024.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多窗口量子纠缠技术实现

1. 前言 最近看到下面这个,多窗口下实现量子纠缠的特效感觉很惊艳和有创意。 除 Three.js 的特效果部分,技术实现上还是很简单的。 2. 技术点分析 这里面核心两个技术点: 不同 Tab 窗口下的消息通讯。窗口的位置获取。 2.1 Tab 窗口通讯…

小红书蒲公英平台开通后,有哪些注意的地方,以及如何进行报价?

今天来给大家聊聊当小红书账号过1000粉后,开通蒲公英需要注意的事项。 蒲公英平台是小红书APP中的一个专为内容创作者设计的平台。它为品牌和创作者提供了一个完整的服务流程,包括内容的创作、推广、互动以及转换等多个方面。 2.蒲公英平台的主要功能 &…

LIS检验系统,涵盖实验室全部管理流程,适合各种实验机构的业务流程

LIS检验系统源码,云LIS医学检验系统源码 LIS检验系统涵盖实验室的全部管理流程,包括从检验申请、标本采集、实验检测、报告发布的、质控管理、科室事务、试剂管理等完整流程的功能,实现智能化、自动化、规范化管理,遵循医学实验室…

查看虚拟机的版本

1、查看虚拟机的版本 cat /etc/centos-release 2、开启防火墙 systemctl start firewalld 3、查看防火墙状态 firewall-cmd --state

基于SpringBoot+maven+Mybatis+html慢性病报销系统(源码+数据库)

一、项目简介 本项目是一套基于SpringBootmavenMybatishtml慢性病报销系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试&a…

【数据结构(六)】排序算法介绍和算法的复杂度计算(1)

文章目录 1. 排序算法的介绍1.1. 排序的分类 2. 算法的时间复杂度2.1. 度量一个程序(算法)执行时间的两种方法2.2. 时间频度2.2.1. 忽略常数项2.2.2. 忽略低次项2.2.2. 忽略系数 2.3. 时间复杂度2.4. 常见的时间复杂度2.5. 平均时间复杂度和最坏时间复杂度 3. 算法的空间复杂度…

浅析AI智能视频监控技术在城市交通中的作用及意义

城市交通作为整个城市的整体脉络,每天都发挥着重要作用,为了最大程度地避免城市交通堵塞、提高城市交通效率,智能视频监控系统发挥了重要作用。具体表现在以下几个方面: 1、交通违规监管:TSINGSEE青犀智能视频监控系统…

软件开发代码审核制度

建立软件代码审核制度是确保代码质量和团队协作的重要步骤。以下是建立有效的软件代码审核制度的一些建议,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.制定代码审核准则: 明确定义代…

【C/PTA —— 15.结构体2(课内实践)】

C/PTA —— 15.结构体2&#xff08;课内实践&#xff09; 7-1 计算职工工资7-2 计算平均成绩7-3 找出总分最高的学生7-4 通讯录的录入与显示 7-1 计算职工工资 #include<stdio.h> #include<stdlib.h> typedef struct GZ {char name[6];double j;double f;double z;…

如何将 MySQL 数据库转换为 SQL Server

本文解释了为什么组织希望将其 MySQL 数据库转换为 Microsoft SQL 数据库。本文接着详细介绍了尝试转换之前需要记住的事项以及所涉及的方法。专业的数据库转换器工具将帮助您快速将 MySQL 数据库记录转换为 MS SQL Server。 在继续之前&#xff0c;我们先讨论一下 MySQL 到 M…

React/Vue/Svelte 前端项目中开始使用TailwindCSS

背景 TailwindCSS 近年来在前端圈非常流行&#xff0c;它摆脱了原有的CSS限制&#xff0c;以灵活实用为卖点&#xff0c;用户通过各种class组合即可构建出漂亮的用户界面。对于初学者而言&#xff0c;可能需要一些上手成本&#xff0c;一旦掌握实用技巧后&#xff0c;Tailwind…

TCP通信

第二十一章 网络通信 本章节主要讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 接下来会一一讲解 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式&#xff0c;也有着优点和缺点…

QQ录屏怎么录声音,如何解决声音录制问题?

在数字化时代&#xff0c;qq不仅是我们日常沟通的工具&#xff0c;还提供了强大的录屏功能&#xff0c;让用户能够轻松捕捉屏幕上的精彩瞬间。然而&#xff0c;很多用户可能会困惑于qq录屏怎么录声音。在本文中&#xff0c;我们将详细介绍如何通过QQ录屏功能录制屏幕及声音&…

【C/PTA —— 15.结构体2(课外实践)】

C/PTA —— 15.结构体2&#xff08;课外实践&#xff09; 7-1 一帮一7-2 考试座位号7-3 新键表输出7-4 可怕的素质7-5 找出同龄者7-6 排队7-7 军训 7-1 一帮一 #include<stdio.h> #include<string.h>struct student {int a;char name[20]; };struct student1 {int …

JavaWeb-HTTP协议

1. 什么是HTTP协议 HTTP超文本传输协(Hyper Text transfer protocol)&#xff0c;是一种用于用于分布式、协作式和超媒体信息系统的应用层协议。它于1990年提出&#xff0c;经过十几年的使用与发展&#xff0c;得到不断地完善和扩展。HTTP 是为 Web 浏览器与 Web 服务器之间的…

新生儿出生缺陷筛查的关键注意事项

引言&#xff1a; 新生儿的出生缺陷是一个复杂而广泛的问题&#xff0c;及早的筛查和诊断对于预防和管理这些缺陷至关重要。出生缺陷可能涉及各个系统&#xff0c;包括心脏、神经、遗传等&#xff0c;因此及时而全面的筛查对新生儿的健康至关重要。本文将深入探讨新生儿出生缺…

Matlab 点云对称性检测

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 这是一个很有趣的功能,它的思路其实与ICP算法的思路有些相似: 首先,它会初始化两个旋转角度,即绕x轴旋转与绕y轴旋转,初始的过程是将点对称(镜像)过去,计算与匹配点之间的距离误差,误差最小者为最优初始值…

抖店店铺没流量?商品销售量低?原因在于这几个!

我是电商珠珠 近期&#xff0c;很多人来跟我反馈&#xff0c;说自己的店铺没有流量和曝光&#xff0c;更别提出单了。 其实&#xff0c;想要自己的店铺月销百万&#xff0c;每天要做的工作有很多&#xff0c;比如分析市场、选品上架、优化、对接达人等&#xff0c;想要自己的…

JAVA后端自学技能实操合集

JAVA后端自学技能实操 内容将会持续更新中,有需要添加什么内容可以再评论区留言,大家一起学习FastDFS使用docker安装FastDFS(linux)集成到springboot项目中 内容将会持续更新中,有需要添加什么内容可以再评论区留言,大家一起学习 FastDFS 组名&#xff1a;文件上传后所在的 st…

网站建设app开发小程序制作|企业软件定制

网站建设app开发小程序制作|企业软件定制 网站建设和软件开发是现代社会非常重要的领域&#xff0c;它们对于企业、机构和个人来说都具有非常大的意义。随着移动互联网的快速发展&#xff0c;小程序制作也逐渐成为一种非常受欢迎的方式。 在过去&#xff0c;建立一个网站需要具…