实验报告——电子公文传输系统安全性设计方案与实现
电子公文传输系统安全性设计与实现
源代码:https://gitee.com/Shady545/gongwen/blob/master/fileweb.zip
一、系统概述
电子公文传输系统网站分为网站首页、公文列表、公文详情、公文批改、公文搜索、用户管理、上传下载等7个功能模块。
建议直接放到D盘下运行,否则使用绝对路径的会报错。
1.网站首页
用户必须属于登录状态
根据登录用户的密级显示其对应的公文,主要根据搜索量、上传时间、查看量、下载量、公文分类方便用户快速定位到自己想要看的公文,如果都未能找到的话可以直接在搜索框中搜索(支持模糊搜索)
下图是普通用户登录后的主页面:
2.公文列表
公文列表由左侧的公文分类点击进入,默认查看所有公文,或者根据左边的公文分类按类查看,或者直接搜索
根据查看量进行排序,可以点击封面图片或者标题进入详情页
无密级用户与有密级用户相比没有有密级的公文展示
3.公文详情
可以查看公文的所有信息,有下载(加密后的)的功能,在线查看功能,公文批复功能(没有批复权限的用户没有这个按钮),搜索框可以搜索公文,详情页展示公文的图片、公文的相关信息和公文摘要,还有观看列表、相关公文来帮助用户提高效率,还加入了公文纠错的功能。
4.公文批改
在文本框中输入批改意见(需要批改权限)
5.公文搜索
6.用户管理
用户登录,验证用户名、密码和验证码
二、安全性措施
-
身份认证(用户名-口令)
- 对口令做了加盐的sha-256哈希保护用户的个人隐私
-
访问控制(只能访问不大于自己密级的文件)
- 低密级的用户的页面中不存在高密级的文件
- 低密级的用户试图通过路由猜测文件的位置会被返回失败并记录日志
-
防御跨站脚本攻击(XSS)
- 转义特殊字符来防御XSS攻击:<转义为<, >转义为>, ’转义为' “转义为" ,& 转义为&
-
防御跨站点请求伪造(CSRF)
- 通过检查每一个 POST 请求中的密文来实现。这保证恶意用户不能“复现”一个表单并用 POST 提交到你的网页,并让一个已登录用户无意中提交该表单。恶意用户必须知道特定于用户的密文(使用 cookie)
-
防御 SQL 注入
- 查询的 SQL 代码与查询的参数是分开定义的。参数可能来自用户从而不安全,因此它们由底层数据库引擎进行转义。
-
防御访问劫持
- 在框架或 iframe 中加载资源。如果响应包含值为
SAMEORIGIN
的头,那么只有当请求来自同一个网站时,浏览器才会在框架中加载资源
- 在框架或 iframe 中加载资源。如果响应包含值为
-
SSL/HTTPS
- 恶意用户不能在客户端和服务器之间嗅探验证资格或其他信息
-
Host 头部验证
- 当
DEBUG
为True
和ALLOWED_HOSTS
为空时,主机将根据['.localhost', '127.0.0.1', '[::1]']
进行验证,防止非预期的访问
- 当
-
Referrer 策略
- 保护用户隐私
-
会话安全
- 要求一个被部署的网页应让不受信任的用户不能访问任何子域
-
文件加密传输
- 用非对称密钥(SM2)保护对称密钥,再用对称密钥实现对文件的加解密
-
文件安全性校验
- 检查文件二进制格式,防止PE文件冒名传输
三、实现的功能
-
用户注册登录
-
用户的权限管理
-
文件在线查看
-
文件上传、下载
-
文件批改