文章目录
中北大学信息对抗软件工程学期任务,企业公文管理系统
使用技术:
- JavaEE Servlet
- JDBC MySQL Jackson
- HTML,CSS,JavaScript(jquery)
- WebSocket简易聊天室
- Junit 白盒测试
上线环境:Linux CentOS7
授课老师 :
现存账号:密码见数据库
1.0 开发完毕(2023.3.30 23:36:50) 现存功能
- 用户管理(注册、登录、root 用户删除修改用户)
- 资金管理(入账、出账 以图标的形式显示资金流动)
- 聊天室(群聊功能)
- 货存管理(进货出货影响资图表变变化)
- 公文发布与审核
为了防止聊天信息数据库表项太多,这里在 Linux 下使用 crontab 命令设置定时任务,每天 0 点执行,清除数据库
2.0 黑盒测试在 2023.4.完成
主要测试内容:
- 基本数据库 API 是否出错
- 网页基础功能测试
- 网站安全方面漏洞
- 编写测试报告
部分项目代码如下:
登录代码:
package servlet;
import sql.User;
import sql.UserDAO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/register")
public class register extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf8");
String name = req.getParameter("name");
String password = req.getParameter("password");
User user = new User();
user.setName(name);
user.setPassword(password);
UserDAO userDAO = new UserDAO();
userDAO.insert(user);
resp.sendRedirect("/MangeSystem/log.html");
}
}
项目运行部分截图
登录页面:
主页:
公文申请页面
公文审批页面:
仓库管理页面
用户管理模块
资金管理模块:
聊天模块:
用户浏览记录:
数据流程图:
3.0 网站相关安全漏洞进行修正(网络安全课程作业)
网路安全需求:对号为已完成需求叉号为未实现需求
前端登录对密码进行非对称数据加密,防止中间网络窃取
- 后端生成RSA公钥和私钥,前端向后端请求获取公钥。
- 用户在前端输入用户名和密码,前端使用RSA公钥对密码进行加密,然后将加密后的密码发送放到隐藏的表单项中,通过表单传给后端。
- 后端使用RSA私钥对密码进行解密,然后进行验证,如果验证通过则允许用户登录。
- 后端生成一个随机的Token,然后使用RSA私钥加密Token,将加密后的Token发送给前端。
- 前端使用RSA公钥对Token进行解密,然后将Token存储在本地,用于后续的请求验证。
- 用户在后续的请求中携带Token,后端使用RSA私钥解密Token,然后验证Token是否有效,如果有效则允许请求处理。