AIGC信息安全-信息体系中安全防范过程应用
一、强密码的规则
- 长度要求:密码至少应为8-12个字符,最好凌驾14个字符。
- 字符复杂性:密码应包罗大写字母、小写字母、数字和特殊字符(如!@#$%^&*)。
- 制止常见词汇:制止使用常见单词、用户名、生日等易于推测的信息。
- 定期更改:发起定期更改密码(如每90天),制止长期使用同一密码。
- 不重复使用:不同体系和服务应使用不同的密码,防止一次泄露影响多个账户。
- 使用密码短语:用一系列无关的单词组成密码短语,可以增强密码强度和影象性。
- 制止一连字符:制止使用一连的字符或数字(如123456, abcdef)。
- 多因素认证(MFA):联合使用密码和其他认证方式(如短信验证码、指纹、硬件令牌等)。
行业案例
1. NIST (National Institute of Standards and Technology)
NIST在其《数字身份指南》(NIST Special Publication 800-63B)中对密码强度提出了发起:
最低密码长度为8个字符。
不逼迫要求复杂性(如特殊字符)但推荐使用长密码短语。
禁用常见弱密码和曾经泄露的密码。
2. OWASP (Open Web Application Security Project)
OWASP发起:
密码长度至少为10个字符(企业内部体系)和16个字符(外部体系)。
逼迫使用多因素认证(MFA)。
使用密码管理器生成和存储复杂密码。
3. PCI-DSS (Payment Card Industry Data Security Standard)
PCI-DSS对密码有严格要求:
密码长度至少为7个字符。
包罗字母和数字组合。
每90天逼迫更换密码。
禁用重复使用最近4次的密码。
二、基于现有生日、姓名、电话号码等信息生成字典用于弱口令自动化扫描
我们的目标是生成用户信息可能密码字典库
示例如下:
1. 文言一心:
Q:已知用户 用户名“熊安一”,“王敏”,请帮助生成 可能的 密码字符串列表,包罗拼音的可能性
A:
当为用户生成密码时,通常会考虑易于影象但又不易被推测的组合。以下是根据用户名“熊安一”和“王敏”生成的可能的密码字符串列表,这些列表包罗了用户名拼音的可能性:
用户名:熊安一
xionganyi123:直接使用拼音并加上数字后缀。
XiongA1y!:使用首字母大写,加入数字和特殊字符。
y1anXiong:颠倒部分拼音字母的次序。
Xiong1anY:使用拼音并改变数字的位置。
Xiong888A1:使用重复数字和拼音的组合。
Y1xiongAn:将用户名中的“一”置于开头。
An1Y_Xiong:使用下划线和拼音的组合。
1XiongA_nY:数字、下划线和拼音的混合。
用户名:王敏
wangmin666:直接使用拼音并加上数字后缀。
WangM!n:首字母大写,并加入特殊字符。
mWangMin:将“敏”的拼音置于开头。
Wmi_n23:使用下划线、拼音和数字的组合。
22MingWang:数字开头,并改变“敏”的拼音为“明”。
MinW_888:使用拼音、下划线和重复数字。
W888ingMin:将数字插入拼音之间。
Min7Wang:使用数字将两个拼音分开。
CSV格式输出
将这些密码保存为CSV文件,可以使用文本编辑器或编程脚本。以下是一个简单的CSV文件示例,其中包罗了两列:用户名 和 可能密码。
熊安一,熊安一
熊安一,xionganyi
熊安一,熊安一123
熊安一,xionganyi123
熊安一,熊安一xionganyi
熊安一,熊安一xionganyi123
熊安一,xay1990
熊安一,wxm1990
王敏,王敏
王敏,wangmin
王敏,王敏123
王敏,wangmin123
王敏,王敏wangmin
王敏,王敏wangmin123
王敏,wm1990
王敏,wmn1990
2. ChatGpt
生成这类密码的Python代码示例,并将其导出为CSV格式
import itertools
import csv
# 界说用户名和拼音组合
usernames = ['熊安一', '王敏']
pinyin_combinations = {
'熊安一': ['xiongan', 'xiongyiyi', 'xiongan1', 'xiongan01', 'xay'],
'王敏': ['wangmin', 'wangmin1', 'wangmin01', 'wm']
}
# 界说可能的密码后缀
suffixes = ['', '123', '2024', '@123', '!']
# 生成密码组合
passwords = []
for username in usernames:
for pinyin in pinyin_combinations[username]:
for suffix in suffixes:
passwords.append(f'{pinyin}{suffix}')
# 写入CSV文件
csv_file = 'password_combinations.csv'
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['username', 'password']) # CSV header
for username in usernames:
for pinyin in pinyin_combinations[username]:
for suffix in suffixes:
writer.writerow([username, f'{pinyin}{suffix}'])
print(f'Passwords have been written to {csv_file}')
运行上面的Python代码将生成一个 password_combinations.csv 文件,内容如下:
username,password
熊安一,xiongan
熊安一,xiongan123
熊安一,xiongan2024
熊安一,xiongan@123
熊安一,xiongan!
熊安一,xiongyiyi
熊安一,xiongyiyi123
熊安一,xiongyiyi2024
熊安一,xiongyiyi@123
熊安一,xiongyiyi!
熊安一,xiongan1
熊安一,xiongan1123
熊安一,xiongan12024
熊安一,xiongan1@123
熊安一,xiongan1!
熊安一,xiongan01
熊安一,xiongan01123
熊安一,xiongan012024
熊安一,xiongan01@123
熊安一,xiongan01!
熊安一,xay
熊安一,xay123
熊安一,xay2024
熊安一,xay@123
熊安一,xay!
王敏,wangmin
王敏,wangmin123
王敏,wangmin2024
王敏,wangmin@123
王敏,wangmin!
王敏,wangmin1
王敏,wangmin1123
王敏,wangmin12024
王敏,wangmin1@123
王敏,wangmin1!
王敏,wangmin01
王敏,wangmin01123
王敏,wangmin012024
王敏,wangmin01@123
王敏,wangmin01!
王敏,wm
王敏,wm123
王敏,wm2024
王敏,wm@123
王敏,wm!
说明
用户名和拼音组合:为每个用户名生成可能的拼音组合(可以根据必要扩展更多组合)。
密码后缀:添加常见的密码后缀,如数字、年份和特殊字符。
生成密码列表:通过嵌套循环生成全部可能的用户名和密码组合。
导出CSV文件:将生成的用户名和密码组合写入CSV文件。
这个方法确保涵盖了多种可能的密码组合,有助于进行安全扫描和弱口令检测
3. 进一步延伸
如我们获取一个集团公司全部用户姓名与生日等敏感信息,很轻易生成密码字典。字典可用于登录接口爆破。
四.基于登录HTTP接口弱口令扫描模块
旨在对体系的登录HTTP接口进行弱口令扫描,识别可能存在的弱口令并提示管理员进行修复。随着网络安全威胁的不停增加,弱口令扫描成为保障体系安全的关键步骤。
数据流图表明
用户 (User):通过管理界面创建和管理扫描任务。
管理服务 (Management Service):处理用户请求,保存和获取扫描配置和结果,启动扫描任务。
扫描服务 (Scanning Service):根据配置发送HTTP请求尝试弱口令,并记录结果。
数据库服务 (Database Service):存储扫描配置、结果和日志。
目标HTTP接口 (Target HTTP Interface):被扫描的目标体系接口。
用户界面 (User Interface):展示扫描结果和任务状态。
数据流说明
用户通过管理界面与管理服务交互,创建、管理和检察扫描任务。
管理服务将扫描配置和结果保存到数据库,并从数据库中获取信息。
当用户发起扫描任务时,管理服务会关照扫描服务执行扫描。
扫描服务根据配置从数据库获取扫描任务信息,并对目标HTTP接口发送请求。
扫描服务根据响应判断弱口令,并将结果记录到数据库。
终极,管理服务将扫描结果展示给用户。
模块组成
扫描服务:负责发送HTTP请求,尝试不同的弱口令组合,记录扫描结果。
管理服务:提供管理界面和API,配置扫描任务和检察扫描结果。
数据库服务:存储扫描配置、结果和日志。
基本功能
弱口令字典管理:支持导入、导出和编辑弱口令字典。
扫描任务管理:创建、修改和删除扫描任务。
扫描执行:并发执行多个扫描任务。
结果陈诉:生成并展示扫描陈诉,提供导出功能。
安全性
身份认证和权限控制:确保只有授权用户可以访问管理界面和API。
日志记录和审计:记录扫描操作日志,提供审计功能。
扩展性
可配置性:支持自界说扫描策略和弱口令字典。
高并发性:支持大规模并发扫描任务。
实现概要设计
扫描服务
扫描服务负责发送HTTP请求,尝试各种弱口令组合。为了进步扫描服从,可以使用多线程和异步IO技能。扫描过程中必要处理以下几个方面:
- 请求构建:根据配置生成HTTP请求,包括URL、请求头和请求体。
- 响应处理:解析HTTP响应,根据状态码和响应内容判断登录是否乐成。
- 结果记录:记录乐成和失败的尝试,生成扫描陈诉。
管理服务
管理服务提供管理界面和API,支持用户配置扫描任务和检察扫描结果。管理服务必要实现以下功能:
- 用户管理:支持用户注册、登录、身份验证和权限管理。
- 扫描任务管理:提供界面和API,支持创建、修改和删除扫描任务。
- 结果展示:展示扫描结果,支持按任务、时间和状态筛选。
数据库服务
数据库服务负责存储扫描配置、结果和日志。必要设计以下几张主要表:
- 用户表:存储用户信息。
- 任务表:存储扫描任务配置信息。
- 结果表:存储扫描结果。
- 日志表:存储操作日志。
二. 应用体系中如何实现密码复杂度判断
JAVA栈:
hutools开源工具类中密码复杂度判断
cn.hutool
hutool-all
5.8.29
https://plus.hutool.cn/apidocs/cn/hutool/core/text/PasswdStrength.html
Passay
Passay 是一个Java库,用于验证密码复杂度。
org.passay
passay
1.6.4
示例:
import org.passay.*;
public class PasswordValidatorExample {
public static void main(String[] args) {
PasswordValidator validator = new PasswordValidator(
new LengthRule(8, 30),
new CharacterRule(EnglishCharacterData.UpperCase, 1),
new CharacterRule(EnglishCharacterData.LowerCase, 1),
new CharacterRule(EnglishCharacterData.Digit, 1),
new CharacterRule(EnglishCharacterData.Special, 1),
new WhitespaceRule()
);
String password = "assword@123";
RuleResult result = validator.validate(new PasswordData(password));
if (result.isValid()) {
System.out.println("assword is valid.");
} else {
System.out.println("assword is invalid: " + String.join(", ", validator.getMessages(result)));
}
}
}
JavaScript
zxcvbn 是由Dropbox开发的一个强大的JavaScript库,用于评估密码强度。
NPM安装- <p>npm install zxcvbn
- </p>
复制代码 示例代码- <blockquote><p>const zxcvbn = require('zxcvbn');
- const password = 'Password@123';
- const result = zxcvbn(password);
- console.log(`Password strength score: ${result.score}`);
- console.log('Feedback:', result.feedback.suggestions.join(' '));</p></blockquote><p>
- </p><p><strong><font face="Verdana">Python栈</font></strong></p><p>password-strength 是一个用于评估密码复杂度的Python库。</p><p><strong>安装</strong></p>[code]<p>pip install password-strength
- </p>
复制代码 示例代码- <blockquote><p>from password_strength import PasswordPolicy
- policy = PasswordPolicy.from_names(
- length=8, # min length: 8
- uppercase=1, # need min. 1 uppercase letters
- numbers=1, # need min. 1 digits
- special=1, # need min. 1 special characters
- nonletters=0 # need min. 0 non-letter characters (digits, specials, anything)
- )
- password = "Password@123"
- result = policy.test(password)
- if not result:
- print("Password is valid.")
- else:
- print("Password is invalid:", result)
- </p></blockquote>
复制代码
.NET栈
PasswordValidator 是一个用于验证密码复杂度的.NET库。
NuGet安装- <p><font face="Verdana"></font></p><p><font face="Verdana">Install-Package PasswordValidator
- </font></p>
复制代码 示例代码- <blockquote><p>using PasswordValidator;
- class Program
- {
- static void Main()
- {
- var validator = new PasswordValidator.PasswordValidator()
- .Length(8, 128)
- .IncludeUpper()
- .IncludeLower()
- .IncludeDigit()
- .IncludeSpecial();
- string password = "Password@123";
- var result = validator.Validate(password);
- if (result.IsValid)
- {
- Console.WriteLine("Password is valid.");
- }
- else
- {
- Console.WriteLine("Password is invalid: " + string.Join(", ", result.Errors));
- }
- }
- }</p></blockquote>
复制代码 [/code]Golang栈:
zxcvbn-go
zxcvbn-go 是一个Golang的密码强度评估库,基于Dropbox的 zxcvbn。
安装- <p>go get -u github.com/nbutton23/zxcvbn-go
- </p>
复制代码 示例代码- <blockquote><p>package main
- import (
- "fmt"
- "github.com/nbutton23/zxcvbn-go"
- )
- func main() {
- password := "Password@123"
- result := zxcvbn.PasswordStrength(password, nil)
- fmt.Printf("Password strength score: %d\n", result.Score)
- fmt.Println("Feedback:", result.Feedback.Suggestions)
- }</p></blockquote>
复制代码
改进发起
防止暴力破解攻击
假如攻击者能够在账户未因认证尝试失败而禁用的情况下推测密码,攻击者就有机会继续进行暴力破解攻击,直到账户被破坏。在Web应用程序上自动化暴力破解/密码推测攻击是一个微不足道的挑衅。应采用密码锁定机制,假如进行了凌驾预设数量的不乐成登录尝试,则锁定账户。密码锁定机制有一个逻辑弱点。攻击者对已知账户名进行大量认证尝试,可能会产生锁定整个用户账户区块的结果。鉴于密码锁定体系的目标是从暴力破解攻击中保护,一个明智的策略是让账户在一段时间后(例如,20分钟)锁定。这大大减慢了攻击者的速度,同时答应账户自动重新开放给合法用户。
此外,多因素认证是防止暴力破解攻击的非常有力的威慑,因为凭证是一个移动目标。当多因素实现并激活时,账户锁定可能不再须要。
日志记录和监控
启用认证功能的日志记录和监控,以实时检测攻击/失败。
- 确保全部失败都被记录和审查
- 确保全部密码失败都被记录和审查
- 确保全部账户锁定都被记录和审查
要求对敏感功能进行重新认证
为了缓解CSRF和会话挟制,重要的是在更新敏感账户信息(例如用户的密码、用户的电子邮件)或在敏感交易(例如将购买的商品运送到新地址)之前,必要当前账户的凭据。假如没有这种对策,攻击者可能能够在不知道用户当前凭据的情况下,通过CSRF或XSS攻击执行敏感交易。此外,攻击者可能暂时物理访问用户的欣赏器或窃取他们的会话ID以接管用户的会话。
别的参考
https://github.com/k8gege/PasswordDic
今天先到这儿,希望对AIGC,云原生,技能领导力, 企业管理,体系架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感爱好的文章:
构建创业公司突击小团队
国际化环境下体系架构演化
微服务架构设计
视频直播平台的体系架构演化
微服务与Docker介绍
Docker与CI一连集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息体系架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目乐成之要素
人际沟透风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与品级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT底子架构规划方案一(网络体系规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量体系演变 如有想了解更多软件设计与架构, 体系IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面显着位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |