基于JAVA+Vue+SpringBoot+MySQL的APK检测管理系统,包含了软件档案模块、软件检测模块、软件举报模块、开放平台模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,APK检测管理系统基于角色的访问控制,给软件管理员、普通用户使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
随着移动应用的迅猛发展,APK文件的数量和复杂性日益增加,给应用市场的安全性和稳定性带来了巨大挑战。为了提高APK文件的检测效率和准确性,本论文提出了一种基于大数据和机器学习的APK检测系统。该系统利用大数据技术对海量的APK文件进行收集和存储,并采用特征提取和特征选择方法对APK文件进行表征。通过构建一个深度学习模型,对APK文件进行分类和检测,以识别潜在的恶意软件和安全隐患。实验结果表明,该系统在APK检测的准确性和效率方面表现出色,对于提高移动应用的安全性具有重要意义。
APK检测系统的功能性需求主要包含数据中心模块、开放平台模块、软件档案模块、软件检测模块、软件举报模块这五大模块,系统是基于浏览器运行的web管理后端,其中各个模块详细说明如下。
数据中心模块包含了APK检测系统的系统基础配置,如登录用户的管理、运营公司组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。
其中登录用户管理模块,由管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。
组织架构,指的是高校的组织架构,该模块适用于管理这些组织架构的部门层级和教师的部门归属情况。
用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。
系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。
公用云盘管理模块,用于统一化维护APK检测系统中的图片,如合同签订文件、合同照片等等。
开放平台是一种三方接口平台,支持其他用户通过API接口的方式调用系统功能,开放平台的数据包括主体名称、主体介绍、应用ID、密匙、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询开放平台数据,用户可以查询管理员发布的开放平台数据。
软件是APK检测系统的核心实体,需要建立软件档案模块对用户发布的软件进行管理,软件档案的字段包括软件名称、软件介绍、开发者、文件、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询软件数据,用户可以查询管理员发布的软件数据,且可以上传自己的软件。
有了软件档案之后,就需要对软件进行检测,用户提交软件检测申请后,保存在软件检测模块,软件检测的字段包括软件ID、软件名称、软件介绍、开发者、检测状态、检测时间、检测人、检测结论,管理员收到用户的软件检测申请后进行检测,并将检测结论录入到系统中。
除了用于提交软件检测申请之外,还支持用户直接举报软件,管理员对齐进行判定,举报的数据存储在软件举报模块中,软件举报字段包括软件ID、软件名称、软件介绍、开发者、举报内容、处理结果、处理人、处理时间,用户可以提交软件举报申请,管理员对用户举报的申请订单进行核实。
UML是面向对象的图形化建模语言,具有表示容易,定义友好,适用范畴广泛,功能强大。用例图是用例模型的一种,需求分析人员可采用用例图表示用户操作行为。APK检测系统的用例图设计主要包括用户用例设计和管理员用例设计。
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询开放平台")
public Result<IPage<OpenPlatform>> getByPage(@ModelAttribute OpenPlatform openPlatform ,@ModelAttribute PageVo page){
QueryWrapper<OpenPlatform> qw = new QueryWrapper<>();
User currUser = securityUtil.getCurrUser();
QueryWrapper<User> userQw = new QueryWrapper<>();
userQw.eq("id",currUser.getId());
userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");
if(iUserService.count(userQw) < 1L) {
qw.eq("user_id",currUser.getId());
}
if(!ZwzNullUtils.isNull(openPlatform.getTitle())) {
qw.like("title",openPlatform.getTitle());
}
if(!ZwzNullUtils.isNull(openPlatform.getStatus())) {
qw.eq("status",openPlatform.getStatus());
}
IPage<OpenPlatform> data = iOpenPlatformService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<OpenPlatform>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增开放平台")
public Result<OpenPlatform> insert(OpenPlatform openPlatform){
User currUser = securityUtil.getCurrUser();
openPlatform.setUserId(currUser.getId());
openPlatform.setTime(DateUtil.now());
Random r = new Random();
int ranInt = r.nextInt(90000) + 10000;
openPlatform.setAppid(ranInt + "");
openPlatform.setSecret(UUID.randomUUID().toString());
iOpenPlatformService.saveOrUpdate(openPlatform);
return new ResultUtil<OpenPlatform>().setData(openPlatform);
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询软件档案")
public Result<IPage<Software>> getByPage(@ModelAttribute Software software ,@ModelAttribute PageVo page){
QueryWrapper<Software> qw = new QueryWrapper<>();
User currUser = securityUtil.getCurrUser();
QueryWrapper<User> userQw = new QueryWrapper<>();
userQw.eq("id",currUser.getId());
userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");
if(iUserService.count(userQw) < 1L) {
qw.eq("user_id",currUser.getId());
}
if(!ZwzNullUtils.isNull(software.getTitle())) {
qw.like("title",software.getTitle());
}
if(!ZwzNullUtils.isNull(software.getContent())) {
qw.like("content",software.getContent());
}
IPage<Software> data = iSoftwareService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Software>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增软件举报")
public Result<SoftwareReport> insert(SoftwareReport softwareReport){
Software s = iSoftwareService.getById(softwareReport.getSoftId());
if(s == null) {
return ResultUtil.error("软件不存在");
}
User currUser = securityUtil.getCurrUser();
softwareReport.setUserId(currUser.getId());
softwareReport.setTitle(s.getTitle());
softwareReport.setContent(s.getContent());
softwareReport.setDeveloper(s.getDeveloper());
softwareReport.setFileUrl(s.getFileUrl());
softwareReport.setWorkResult("");
softwareReport.setWorkUser("");
softwareReport.setWorkTime("");
iSoftwareReportService.saveOrUpdate(softwareReport);
return new ResultUtil<SoftwareReport>().setData(softwareReport);
}
@RequestMapping(value = "/addOne", method = RequestMethod.POST)
@ApiOperation(value = "新增软件检测")
public Result<SoftwareCheck> addOne(@RequestParam String id){
Software s = iSoftwareService.getById(id);
if(s == null) {
return ResultUtil.error("软件不存在");
}
SoftwareCheck softwareCheck = new SoftwareCheck();
softwareCheck.setTitle(s.getTitle());
softwareCheck.setContent(s.getContent());
softwareCheck.setDeveloper(s.getDeveloper());
softwareCheck.setFileUrl(s.getFileUrl());
softwareCheck.setStatus("未检测");
softwareCheck.setCheckTime("");
softwareCheck.setCheckUser("");
softwareCheck.setCheckResult("");
iSoftwareCheckService.saveOrUpdate(softwareCheck);
return new ResultUtil<SoftwareCheck>().setData(softwareCheck);
}
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!