等保那些事

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

公司上市之后,安全性变得尤为重要。定期每年都会有等保部门的人才扫描系统漏铜,针对高危漏洞必须修复。

随着对等保相关事宜的了解,才发现互联网众多公司都在调整着安全策略。还记得当年申请的网易邮箱简单的用纯数字密码,结果每次登录都会以拿钱登记较低,建议修改密码,密码中必须包含数字、字母以及特殊字符;还有GitHub强制开启了二次验证,把自己的账号都搞丢了......

02 等保的简介

这里的等保指三级等保(等保2.0),三级等保"全称为"网络安全等级保护第三级",也被称为"监督保护级"。它源自中国的 《网络安全法》 和 《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019)*等一系列国家标准,是国家对非银行机构的最高级别认证(第一级为自主保护,第二级为指导保护,第三级为监督保护,第四级为强制保护,第五级为专控保护)。

三级等保适用于涉及国家安全、社会秩序、公共利益的重要网络和信息系统。一旦遭到破坏,会对相关方面造成严重损害。通常涉及单位有政府机关、金融行业、能源行业、佳通运输、公共服务以及互联网平台等。

等保的具体详细事宜我们不做讨论,我们聊聊等保中我们系统暴漏的问题。

03 问题暴漏

等保扫描之后,会整理出类似的渗透报告,按照漏洞的安全程度分别列出高、中、低的整改项。高危漏洞是必须要要整改的。

3.1 Xss漏铜

这个漏洞很常见,也很容易忽略。就是攻击者用脚本伪装参数来攻击系统,导致系统不能按照预期的展示,甚至中毒。我们在做表单提交的时候,或者评论提交的时候,没有做录入项的校验。攻击者就可以通过嵌入脚本,破坏系统。如:

js 复制代码
<script>alert(123)<script>

内容提交后,每次打开页面就会出现123的弹框。如果是一个死循环的脚本,就会知道页面直接不可用。也可以伪装成视频等其他脚本。

解决方案也很简单:

就是通过服务端直接过略掉可疑的标签。jsoup框架已经帮我们封装好了,直接调用即可。

java 复制代码
public class XssUtil {

	/**
	 * 使用自带的 basicWithImages 白名单
	 */
	private static final Safelist WHITE_LIST = Safelist.relaxed();

	/** 配置过滤化参数, 不对代码进行格式化 */
	private static final Document.OutputSettings OUTPUT_SETTINGS = new Document.OutputSettings().prettyPrint(false);
	static {
		// 富文本编辑时一些样式是使用 style 来进行实现的
		// 比如红色字体 style="color:red;"
		// 所以需要给所有标签添加 style 属性
		WHITE_LIST.addAttributes(":all", "style");
	}

	public static String clean(String content) {
		return Jsoup.clean(content, "", WHITE_LIST, OUTPUT_SETTINGS);
	}

}

依赖:

xml 复制代码
<dependency>
   <groupId>org.jsoup</groupId>
   <artifactId>jsoup</artifactId>
   <version>1.21.2</version>
</dependency>

3.2 枚举用户

我们在做登录的时候,为了友好的提示用户登录的错误信息:

  • 账户不存在
  • 密码错误
  • 账户已封停
  • ......

现在还记得,当时测试人员还提了BUG,说你笼统的提示用户,用户会一头雾水,不知道账户怎么了。还特意改的精确的信息提示。然后等保来了之后,却是存在安全问题,说详细的提示,会导致攻击者枚举账户,最后直到系统中有哪些账户。

这个看似不起眼的小东西,平时可能不在意。反正你又登不进去,知道了也没有。但是等保不这么认为。

解决方案也很简单:就是直接提示类似"用户名或密码错误"这样的混淆提示即可,在加上验证码。提高枚举的难度。

3.3 明文传输

尤其用户名和密码参数。我们都可以网络传输的数据是可以被拦截的。登录名和密码属于敏感信息,被截获后可能会造成财产损失。对然被定义的安全级别较低,但是却是一个不得不修的问题。

解决方案也很简单:参数提交的时候通过AES加密算法加密,然后服务端在解密验证即可。

3.4 密码长度

世界上最简单的密码:123456

密码安全等级较低,攻击者就可以通过字典、枚举的方式撞库,最后攻破系统。看过红客联盟的公开课,说每一个黑客都有自己独属的密码本,密码等级弱的话,很容易就被攻破。

解决方案也很简单:增加复杂度如密码必须包含大小写、特殊字符等、或者增加长度。

04 小结

你们的系统有没有类似的问题,快去修复吧!

相关推荐
少许极端6 小时前
算法奇妙屋(二十八)-递归、回溯与剪枝的综合问题 1
java·算法·深度优先·剪枝·回溯·递归
Boop_wu6 小时前
简单介绍 JSON
java·开发语言
William_cl6 小时前
ASP.NET路由长度约束精讲:[HttpGet (“{name:minlength (3)}“)] 字符长度限制吃透,附避坑指南 + 实战代码
后端·asp.net
知识即是力量ol6 小时前
初识 Kafka(一):分布式流平台的定义、核心优势与架构全景
java·分布式·kafka·消息队列
爱吃生蚝的于勒6 小时前
【Linux】线程概念(一)
java·linux·运维·服务器·开发语言·数据结构·vim
kong79069286 小时前
Nginx性能优化
java·nginx·性能优化
Pluchon6 小时前
硅基计划4.0 算法 简单模拟实现位图&布隆过滤器
java·大数据·开发语言·数据结构·算法·哈希算法
我命由我123456 小时前
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)
java·开发语言·后端·java-ee·intellij-idea·idea·intellij idea
szhf786 小时前
SpringBoot Test详解
spring boot·后端·log4j
Seven976 小时前
AQS深度探索:以ReentrantLock看Java并发编程的高效实现
java