一个基于数据分级加密存储与传输机制的安全文档管理系统,支持用户认证、权限控制和文档安全分级管理。
这个安全文档管理系统通过建立双重分级体系来实现数据保护,首先在用户层面区分管理员和普通用户两种角色,同时在文档层面划分机密文档和普通文档两个安全级别。系统根据文档的安全级别采用不同强度的AES加密算法,其中机密文档使用AES-256加密提供最高级别的安全保护,而普通文档则使用AES-128加密来平衡安全性和性能需求。每个上传的文档都会生成独立的加密密钥和初始化向量,使用高强度的随机数生成器确保密钥的不可预测性,然后将文档内容完全加密后存储在文件系统中,而加密所需的密钥和初始化向量则单独保存在数据库中,实现了密钥与数据的物理分离。在传输安全方面,系统采用JWT令牌机制进行用户身份认证,每次API请求都必须携带有效的认证令牌,同时结合用户角色和文档级别进行多重权限验证,确保普通用户只能访问普通文档和自己上传的文件,而管理员则拥有所有文档的访问权限。当用户请求下载文档时,系统首先验证用户身份和权限,然后根据数据库中存储的密钥信息对加密文件进行实时解密,将解密后的原始文件内容安全地传输给授权用户。这种设计确保了即使攻击者获取了加密文件或者数据库信息中的任意一方,都无法完整还原出敏感数据,从而有效防范了数据泄露风险。
这个安全文档管理系统实现了一套综合性的提示词安全过滤与校验机制,通过多层检测技术有效防范提示词注入等攻击。系统首先建立了一个完整的攻击模式库,涵盖直接指令注入、角色劫持、系统绕过、信息提取、越狱攻击等多种攻击类型,同时支持中英文双语攻击模式识别,包括针对DAN类型越狱攻击、虚拟场景绕过攻击等常见的提示词注入手段。在语义分析层面,系统运用关键词统计和上下文分析技术,通过检测矛盾性陈述、指令性关键词密度、系统相关术语等语义特征来识别潜在的恶意意图,当关键词出现频率超过预设阈值时会触发安全警报。系统还实现了编码攻击检测机制,能够识别Base64编码隐藏、URL编码绕过、Unicode隐藏字符等技术手段,通过解码分析来发现隐藏在编码内容中的恶意指令。在防护机制方面,系统采用基于IP地址的频率限制和黑名单机制,当检测到连续的高风险请求时会自动封禁攻击源IP地址,同时对输入长度进行限制并检测重复填充攻击。风险评分系统根据检测结果的严重程度进行量化评估,将威胁级别分为关键、高、中、低四个等级,对应不同的评分权重,当总体风险评分超过60分时会拒绝处理请求。输入清理功能会自动移除HTML标签、特殊字符等危险内容,并限制输入长度防止缓冲区溢出攻击。整个过滤流程在用户提交问题时实时执行,首先进行安全检查,只有通过验证的安全输入才会被转发到后续的RAG处理流程,确保系统在提供智能问答服务的同时有效防范各类提示词注入攻击,保护系统安全和数据完整性。
这个安全文档管理系统实现了一套完整的输出内容审查机制,通过多层自然语言处理技术有效防范模型输出敏感信息。系统首先建立了详细的敏感信息模式库,包含密码和认证信息、个人隐私数据、系统敏感配置、银行金融信息等多个类别,每种模式都定义了正则表达式匹配规则、严重程度等级以及相应的替换策略,例如对于密码泄露使用高强度正则表达式匹配各种密码格式,并自动替换为安全提示文本。在关键词匹配层面,系统不仅识别直接的敏感词汇,还支持中英文双语检测,能够识别诸如手机号码、身份证号、邮箱地址、IP地址、数据库连接字符串、文件路径等各类敏感信息,并根据上下文进行智能判断,避免误报正常的技术讨论内容。语义理解技术通过分析关键词组合和上下文关联来判断内容的敏感程度,系统会检测系统内部信息讨论、安全漏洞相关内容、权限提升操作、数据提取行为等高风险语义模式,当同时出现特定关键词和相关上下文时会触发安全警报。白名单机制确保正常的技术说明和示例内容不会被误过滤,系统能够识别诸如密码示例、IP地址举例、配置文件说明等合理的技术文档内容。内容清理功能会根据检测结果对敏感信息进行精确替换,保持文本的可读性和完整性,同时自动添加安全提醒声明告知用户敏感信息已被屏蔽。风险评分机制根据检测到的敏感内容类型和数量计算综合风险分值,将输出内容分为安全、中风险、高风险等不同等级,当风险分值超过阈值时会触发更严格的过滤措施。整个审查流程在RAG模型生成回答后实时执行,确保用户看到的所有内容都经过了安全检查,有效防止了系统配置、用户隐私、认证凭据等敏感信息的意外泄露,在提供有用信息的同时最大程度保护了系统和用户的安全。
- Python 3.8+
- PostgreSQL 12+
安装依赖
pip install -r requirements.txt配置 默认配置为我的服务器地址
启动系统
python server.py访问系统
- 主界面: http://localhost:8090/static/index.html
- 默认管理员账户:
admin/admin123
- 打开系统首页
- 使用默认管理员账户登录:
admin/admin123 - 或点击"注册"创建新的普通用户账户
- 点击侧边栏"上传文件"
- 拖拽文件到上传区域或点击选择文件
- 选择文档安全级别:
- 普通文档: 所有用户可见
- 机密文档: 仅管理员可上传和管理
- 填写文档描述(可选)
- 点击"上传文档"
- 在"文档管理"页面查看所有可访问的文档
- 使用搜索框快速查找文档
- 使用级别过滤器筛选不同安全级别的文档
- 点击文档查看详细信息
- 下载或删除文档(需要相应权限)
管理员账户具有以下额外功能:
- 上传和管理机密文档
- 删除任何文档
- 查看系统统计信息
- 访问管理面板
- 机密文档: AES-256-CBC加密
- 普通文档: AES-128-CBC加密
- 密钥管理: 每个文件独立的加密密钥和初始化向量
- 存储安全: 密钥与文件分离存储
角色权限矩阵:
│ 普通文档 │ 机密文档 │
────────────┼─────────┼─────────┤
普通用户 │ 读写 │ 无权限 │
管理员 │ 读写 │ 读写 │
- JWT令牌: 基于JSON Web Token的无状态认证
- 密码加密: 使用PBKDF2-SHA256哈希存储
- 会话管理: 自动令牌过期和刷新




