
01 引言
公司上市之后,安全性变得尤为重要。定期每年都会有等保部门的人才扫描系统漏铜,针对高危漏洞必须修复。
随着对等保相关事宜的了解,才发现互联网众多公司都在调整着安全策略。还记得当年申请的网易邮箱简单的用纯数字密码,结果每次登录都会以拿钱登记较低,建议修改密码,密码中必须包含数字、字母以及特殊字符;还有GitHub强制开启了二次验证,把自己的账号都搞丢了…
02 等保的简介
这里的等保指三级等保(等保2.0),三级等保”全称为“网络安全等级保护第三级”,也被称为“监督保护级”。它源自中国的 《网络安全法》 和 《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019)*等一系列国家标准,是国家对非银行机构的最高级别认证(第一级为自主保护,第二级为指导保护,第三级为监督保护,第四级为强制保护,第五级为专控保护)。
三级等保适用于涉及国家安全、社会秩序、公共利益的重要网络和信息系统。一旦遭到破坏,会对相关方面造成严重损害。通常涉及单位有政府机关、金融行业、能源行业、佳通运输、公共服务以及互联网平台等。
等保的具体详细事宜我们不做讨论,我们聊聊等保中我们系统暴漏的问题。
03 问题暴漏

等保扫描之后,会整理出类似的渗透报告,按照漏洞的安全程度分别列出高、中、低的整改项。高危漏洞是必须要要整改的。
3.1 Xss漏铜
这个漏洞很常见,也很容易忽略。就是攻击者用脚本伪装参数来攻击系统,导致系统不能按照预期的展示,甚至中毒。我们在做表单提交的时候,或者评论提交的时候,没有做录入项的校验。攻击者就可以通过嵌入脚本,破坏系统。如:
<script>alert(123)<script>
内容提交后,每次打开页面就会出现123的弹框。如果是一个死循环的脚本,就会知道页面直接不可用。也可以伪装成视频等其他脚本。
解决方案也很简单:
就是通过服务端直接过略掉可疑的标签。jsoup框架已经帮我们封装好了,直接调用即可。
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);
}
}
依赖:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.21.2</version>
</dependency>
3.2 枚举用户
我们在做登录的时候,为了友好的提示用户登录的错误信息:
- 账户不存在
- 密码错误
- 账户已封停
- …
现在还记得,当时测试人员还提了BUG,说你笼统的提示用户,用户会一头雾水,不知道账户怎么了。还特意改的精确的信息提示。然后等保来了之后,却是存在安全问题,说详细的提示,会导致攻击者枚举账户,最后直到系统中有哪些账户。
这个看似不起眼的小东西,平时可能不在意。反正你又登不进去,知道了也没有。但是等保不这么认为。

解决方案也很简单:就是直接提示类似"用户名或密码错误"这样的混淆提示即可,在加上验证码。提高枚举的难度。
3.3 明文传输
尤其用户名和密码参数。我们都可以网络传输的数据是可以被拦截的。登录名和密码属于敏感信息,被截获后可能会造成财产损失。对然被定义的安全级别较低,但是却是一个不得不修的问题。

解决方案也很简单:参数提交的时候通过AES加密算法加密,然后服务端在解密验证即可。
3.4 密码长度
世界上最简单的密码:123456
密码安全等级较低,攻击者就可以通过字典、枚举的方式撞库,最后攻破系统。看过红客联盟的公开课,说每一个黑客都有自己独属的密码本,密码等级弱的话,很容易就被攻破。
解决方案也很简单:增加复杂度如密码必须包含大小写、特殊字符等、或者增加长度。
04 小结
你们的系统有没有类似的问题,快去修复吧!
3659

被折叠的 条评论
为什么被折叠?



