AIGC信息安全-在应用系统中安全防范过程实践应用

https://www.518cn.com   发布时间:2025-03-18 18:52   作者:网络
摘要:AIGC信息安全-信息系统中安全防范过程应用一、强密码的规则长度要求:密码至少应为8-12个字符,最好超过14个字符。字符复杂性:密码应包含大写字母、小写字母、数字和特殊字符(如

AIGC信息安全-信息系统中安全防范过程应用

一、强密码的规则

  • 长度要求:密码至少应为8-12个字符,最好超过14个字符。
  • 字符复杂性:密码应包含大写字母、小写字母、数字和特殊字符(如^&*)。
  • 避免常见词汇:避免使用常见单词、用户名、生日等易于猜测的信息。
  • 定期更改:建议定期更改密码(如每90天),避免长期使用同一密码。
  • 不重复使用:不同系统和服务应使用不同的密码,防止一次泄露影响多个账户。
  • 使用密码短语:用一系列无关的单词组成密码短语,可以增强密码强度和记忆性。
  • 避免连续字符:避免使用连续的字符或数字(如123456, abcdef)。
  • 多因素认证(MFA):结合使用密码和其他认证方式(如短信验证码、指纹、硬件令牌等)。


行业案例
1. NIST (National Institute of Standards and Technology)
NIST在其《数字身份指南》()中对密码强度提出了建议:
最低密码长度为8个字符。
不强制要求复杂性(如特殊字符)但推荐使用长密码短语。
禁用常见弱密码和曾经泄露的密码。

2. OWASP ()
OWASP建议:
密码长度至少为10个字符(企业内部系统)和16个字符(外部系统)。
强制使用多因素认证(MFA)。
使用密码管理器生成和存储复杂密码。

3. PCI-DSS ()
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技术。扫描过程中需要处理以下几个方面:

  1. 请求构建:根据配置生成HTTP请求,包括URL、请求头和请求体。
  2. 响应处理:解析HTTP响应,根据状态码和响应内容判断登录是否成功。
  3. 结果记录:记录成功和失败的尝试,生成扫描报告。

管理服务

管理服务提供管理界面和API,支持用户配置扫描任务和查看扫描结果。管理服务需要实现以下功能:

  1. 用户管理:支持用户注册、登录、身份验证和权限管理。
  2. 扫描任务管理:提供界面和API,支持创建、修改和删除扫描任务。
  3. 结果展示:展示扫描结果,支持按任务、时间和状态筛选。

数据库服务

数据库服务负责存储扫描配置、结果和日志。需要设计以下几张主要表:

  1. 用户表:存储用户信息。
  2. 任务表:存储扫描任务配置信息。
  3. 结果表:存储扫描结果。
  4. 日志表:存储操作日志。


二. 应用系统中如何实现密码复杂度判断

JAVA栈:

hutools开源工具类中密码复杂度判断
<dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.8.29</version>
</dependency>

Passay

Passay 是一个Java库,用于验证密码复杂度。

<dependency>
     <groupId>org.passay</groupId>
     <artifactId>passay</artifactId>
     <version>1.6.4</version>
</dependency>

示例:

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 = "Password@123";
         RuleResult result = validator.validate(new PasswordData(password));

        if (result.isValid()) {
             System.out.println("Password is valid.");
         } else {
             System.out.println("Password is invalid: " String.join(", ", validator.getMessages(result)));
         }
     }
}

JavaScript

zxcvbn 是由Dropbox开发的一个强大的JavaScript库,用于评估密码强度。

NPM安装

npm install zxcvbn

示例代码

  
  
  

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(' '));


Python栈

password-strength 是一个用于评估密码复杂度的Python库。

安装

pip install password-strength

示例代码

   
   
   

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)


.NET栈
PasswordValidator 是一个用于验证密码复杂度的.NET库。

NuGet安装

Install-Package PasswordValidator

示例代码

   
   
   

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)); } } }

Golang栈:

zxcvbn-go

zxcvbn-go 是一个Golang的密码强度评估库,基于Dropbox的 zxcvbn

安装

go get -u github.com/nbutton23/zxcvbn-go

示例代码

 
 
 

package main import ( "fmt" "github.com/nbutton23/zxcvbn-go" ) func main() { password := "Password@123" result := zxcvbn.PasswordStrength(password, nil) fmt.Printf("Password strength score: %dn", result.Score) fmt.Println("Feedback:", result.Feedback.Suggestions) }


改进建议

防止暴力破解攻击

      如果攻击者能够在账户未因认证尝试失败而禁用的情况下猜测密码,攻击者就有机会继续进行暴力破解攻击,直到账户被破坏。在Web应用程序上自动化暴力破解/密码猜测攻击是一个微不足道的挑战。应采用密码锁定机制,如果进行了超过预设数量的不成功登录尝试,则锁定账户。密码锁定机制有一个逻辑弱点。攻击者对已知账户名进行大量认证尝试,可能会产生锁定整个用户账户区块的结果。鉴于密码锁定系统的目的是从暴力破解攻击中保护,一个明智的策略是让账户在一段时间后(例如,20分钟)锁定。这大大减慢了攻击者的速度,同时允许账户自动重新开放给合法用户。

此外,多因素认证是防止暴力破解攻击的非常有力的威慑,因为凭证是一个移动目标。当多因素实现并激活时,账户锁定可能不再必要。

日志记录和监控

启用认证功能的日志记录和监控,以实时检测攻击/失败。

  • 确保所有失败都被记录和审查
  • 确保所有密码失败都被记录和审查
  • 确保所有账户锁定都被记录和审查
要求对敏感功能进行重新认证

    为了缓解CSRF和会话劫持,重要的是在更新敏感账户信息(例如用户的密码、用户的电子邮件)或在敏感交易(例如将购买的商品运送到新地址)之前,需要当前账户的凭据。如果没有这种对策,攻击者可能能够在不知道用户当前凭据的情况下,通过CSRF或XSS攻击执行敏感交易。此外,攻击者可能暂时物理访问用户的浏览器或窃取他们的会话ID以接管用户的会话。


其它参考



今天先到这儿,希望对AIGC,云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
































如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

相关文章

最新评论