软件安全与漏洞--实验 软件安全设计

假定为学校开发一个在线学习系统,结合上个实验的安全需求分析与本章的《一个基本web应用系统的安全功能设计》,请给出该系统的安全设计。

软件安全与漏洞--实验 软件安全需求分析-CSDN博客

一、 实验目的
  1. 理解并掌握Web应用系统的安全架构设计方法。
  2. 依据国家标准(如GB/T 22239)及行业规范,针对具体系统进行安全功能设计。
  3. 将安全需求转化为具体的技术实现方案(如身份认证、访问控制、数据安全等)。
二、 实验环境
  • 操作系统:Windows / Linux
  • 设计工具:Visio / ProcessOn / Word
  • 参考标准:《信息系统安全等级保护基本要求》(GB/T 22239-2008) 等(如教科书图1所示)
三、 实验内容与步骤(核心部分)

1. 系统安全架构分层设计

根据教科书7.3.1节,我们将"学校在线学习系统"划分为五个层次进行针对性设计:

  • 终端层: 师生使用的PC及移动设备。
  • 网络层: 校园网边界防护,Web应用防火墙部署。
  • 主机层: 操作系统加固,最小权限原则。
  • 应用层: 核心业务逻辑安全(登录、选课、成绩录入)。
  • 数据层: 数据库加密存储与备份。

2. 应用安全功能详细设计(对应教科书7.3.1(1))

(1) 身份认证设计

  • 多因素认证: 针对管理员教师角色,采用"用户名/口令 + 手机动态验证码"的双因素认证方式(符合教科书图2中"等级保护三级及以上系统应至少采用两种认证方式"的要求)。学生用户采用"用户名/口令 + 图形验证码"。
  • 密码存储策略: 用户密码在数据库中严禁明文存储。设计采用 SHA-256 加盐(Salt) 的哈希算法进行存储(符合教科书图2中"存储用户密码的哈希值,加入随机值"的要求)。
  • 防暴力破解: 设计账户锁定机制,同一账号连续 5次 登录失败后,锁定账号 30分钟(符合教科书图2中"设计账号锁定功能"的要求)。

(2) 访问控制设计

  • 基于角色的访问控制: 设计RBAC模型。
    • 学生: 仅能访问课程浏览、作业提交、个人成绩查询模块。
    • 教师: 可访问课程管理、成绩录入、作业批改模块。
    • 管理员: 可访问用户管理、系统配置模块。
  • 最小权限原则: 所有接口默认拒绝访问,仅在服务端显式校验权限通过后放行(符合教科书图2中"授权粒度尽可能小"、"在服务器端实现访问控制"的要求)。

(3) 输入与输出验证设计

  • 输入验证: 对所有用户输入(如评论区、作业上传文件名)进行白名单验证。限制特殊字符(如 ', ;, <script>),防止SQL注入和XSS攻击(符合教科书图3中"对所有来源不在可信范围之内的输入数据进行验证"的要求)。
  • 输出编码: 在页面展示用户提交的数据前,进行HTML实体编码。

(4) 会话管理设计

  • Cookie安全: 设置Session Cookie的属性为 HttpOnly(防止JS读取)和 Secure(仅HTTPS传输)(符合教科书图4中"设置Cookie的Secure...属性"的要求)。
  • 会话超时: 用户无操作超过 20分钟,系统自动注销会话(符合教科书图4中"设计合理的会话存活时间"的要求)。
  • 防CSRF: 在关键操作(如修改密码、提交成绩)的表单中加入一次性随机令牌(Token)。

(5) 异常管理与审计日志

  • 通用错误信息: 登录失败时,统一提示"用户名或密码错误",不区分是用户不存在还是密码错误,防止信息泄露(符合教科书图4中"使用通用错误信息"的要求)。
  • 日志审计: 记录关键操作日志(登录、修改成绩、删除课程)。日志内容包含:用户ID、时间戳、IP地址、操作类型、结果(成功/失败)。日志文件存储在Web目录之外,防止被下载(符合教科书图5中"禁止将业务日志保存到Web目录下"的要求)。

3. 数据安全设计(对应教科书7.3.1(2))

(1) 机密性设计

  • 传输加密: 全站启用 HTTPS (TLS 1.2+) 协议,防止登录凭证和敏感数据在传输过程中被嗅探(符合教科书图6中"使用安全的传输协议"的要求)。
  • 存储加密: 学生的身份证号、手机号等敏感字段,在数据库中使用 AES-256 算法加密存储。

(2) 完整性设计

  • 利用数据库的事务机制(Transaction)保证选课、成绩录入操作的原子性,防止数据不一致。
四、 实验结果(及调试过程)

(此处建议画一个简单的图或者文字描述)

设计成果描述:

完成了《学校在线学习系统安全设计说明书》。

  1. 架构层面: 确定了基于B/S架构的安全防护体系。
  2. 功能层面: 详细定义了登录模块的加密流程(前端RSA加密 -> 传输 -> 后端SHA256校验)和基于RBAC的权限控制矩阵。
  3. 数据层面: 制定了敏感数据加密存储规范和数据库备份策略。

符合性检查:

本设计方案已对照教科书7.3节要求自查:

  • √\] 身份认证已包含防暴力破解和强密码策略。

  • √\] 数据传输已设计HTTPS通道。

相关推荐
asdfg12589631 小时前
无用空数组的用法:numberList.toArray(new Integer[0])
java·开发语言
H_z_q24011 小时前
HCIP的OSPF接口网络类型
网络
likerhood1 小时前
认识 JVM:Java 程序背后的那台“隐形计算机”
java·开发语言·jvm
wangchunting1 小时前
Java9功能更新说明
java·开发语言
~|Bernard|1 小时前
三,go语言中channel的底层原理
开发语言·后端·golang
likerhood1 小时前
Java 反射与注解的详细讲解
java·开发语言·数据库
asdfg12589631 小时前
从Java的设计模式看接口和实现---List与ArrayList
java·开发语言·设计模式·面向对象·面向接口
不会飞的鲨鱼1 小时前
观鸟网 RSA加密 AES 解密
javascript·爬虫·python
CHINA红旗下1 小时前
Claude的使用
python