第四次”数据库原理及应用”课程大作业

发布时间 2023-07-24 14:50:57作者: LEE_Minhyung

一、分析说明题

在数据库系统应用为公众提供信息服务过程中,为什么要求对运营者和维护管理人员实施严格的法规与职业道德约束?从技术层面如何保护用户个人隐私和机构商业机密?

答:

IT行业的快速发展给人类的交往、学习、工作和生活带来很多便利,极大地推动了社会的进步。但同时,计算机病毒、黑客、信息泄露等问题的出现也让人惶恐不安。身处大数据时代,人们的隐私权很容易被侵犯。人们在网络上的活动都“有迹可循”。许多算法可以根据用户平日上网时所留下的数据推测出每人的生活习惯等数据;一些智能设备,如智能手环,24小时记录用户的活动,不可避免地会遇到隐私的问题。一些重要数据库软系统广泛使用在政府机关、军队和军工企业,掌握了大量的涉及到国家安全和国计民生的重要信息,不得泄露;也广泛使用于高科技企业、制造业和文化创意企业,这些企业的核心价值就在于图纸、配方和创意作品。

科技水平的进步如果不受法律、道德和伦理的约束,将会给人们的经济和生活造成毁灭性的灾难。数据库系统的运营者和维护管理人员作为这些重要信息的直接接触者,应该明白这些信息的重要性与不可泄露性。不仅不应被利益驱使主动窃取、泄露,还要利用自身技术保护这些信息。

所以,运营者和维护管理人员首先必须遵守国家相关法律法规,严格要求自己。不利用技术来侵犯他人合法权益,不利用技术来获取不正当利益。更要具备基本的职业道德,社会也要加强对软件从业人员者的职业道德教育,特别要对软件高级人才进行道德和伦理方面的教育,让他们的才华服务社会和大众。

从技术层面上,数据库有多种安全机制来保护用户个人隐私和机构商业机密。比如标识与鉴别,访问控制,安全审计,备份与恢复,数据加密,资源限制,安全加固和安全管理等,如图1所示。

1 数据库安全机制及功能

下面具体介绍几种常用的安全机制实现方式。

    • 数据库加密

数据库加密方式分为两种:一是数据库网上传输的数据,通常利用SSL协议来实现;

二是数据库存储的数据,通过数据库存储加密来实现。

按照加密组件与数据库管理系统的关系,数据库存储加密可以分成两种加密方式:一是库内加密,指在DBMS内部实现支持加密的模块;二是库外加密,指在DBMS范围之外,由专门的加密部件完成加密/解密操作。

    数据库存储加密的常用技术方法如下:

    • 基于文件的数据库加密技术:将数据库文件作为整体,对整个数据库文件进行加密,形成密文来保证数据的机密性。
    • 基于记录的数据库加密技术:将数据库的每一个记录加密成密文并存放于数据库文件中。
    • 基于字段的数据库加密技术:加密数据库的字段,以不同记录的不同字段为基本加密单元进行加密。
    • 数据库脱敏

数据脱敏是指按照脱敏规则对敏感数据进行的变换,去除标识数据,数

据实现匿名化处理,从而实现敏感数据的保护。

数据库脱敏是指利用数据脱敏技术将数据库中的数据进行变换处理,在保持数据按需使用目标的同时,又能避免敏感数据外泄。

常见的数据脱敏技术方法:有屏蔽、变形、替换、随机、加密,使得敏感数据不泄露给非授权用户或系统,有效保护隐私和机密。

    • 数据库防火墙

根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操

作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。

面对来自外部的入侵行为,数据库防火墙提供SQL注入禁止和数据库虚拟补丁包功能。通过虚拟补丁包,数据库系统不用升级、打补丁,即可完成对主要数据库漏洞的防控。

具体来讲,数据库防火墙主要有以下安全作用和实现方法:

① 屏蔽直接访问数据库的通道:数据库防火墙部署介于数据库服务器和应用服务器之间,屏蔽直接访问的通道,防止数据库隐通道对数据库的攻击。

② 增强认证:应用程序对数据库的访问,必须经过数据库防火墙和数据库自身两层身份认证。

③ 攻击检测:可实时检测用户对数据库进行的SQL注入和缓冲区溢出攻击,并报警或阻止攻击行为,记录攻击操作发生的时间、来源IP、登录数据库的用户名、攻击代码等详细信息。

④ 数据库安全审计:对数据库服务器的访问情况进行独立审计,审计信息可以包括用户名、程序名、IP地址、请求的数据库、连接建立的时间、连接断开的时间、通信量大小、执行结果等信息。

 

二、数据库后端编程动手实践题

在一个成绩管理系统数据库GradeDB中,定义如下关系表:

       STUDENT(SID,SName,Age,Sex)

  GRADE(SID,CID,Score, Note)

  COURSE(CID,CName,Teacher)

(1)编写SQL程序创建数据库及其关系表,并插入20个学生的2门课程(“数据库原理及应用”、“数据结构与算法”)成绩数据;

①首先创建gradedb数据库以及student表,grade表,course表,如图2及图3。

2 创建数据库

3 创建关系表

②插入数据,如图4。

4 插入数据

(2)编写触发器程序实现GRADE表数据修改,在日志表(GradeLOG)记录相关操作数据,如操作用户、学号、课程号、修改时间、修改前成绩、修改后成绩。

①首先创建日志表gradelog,如图5所示。

5 创建日志表

 

②创建触发器函数grade_audit(),如图6所示。

6 创建触发器函数

 

③在grade表上创建触发器grade_audit_trigger,如图7所示。

7 创建触发器

 

④接下来进行触发器功能的验证。

  将学号为123453,课程号为567890对应的成绩修改为80分,如图8所示。

8 修改成绩为80分

 

  查看gradelog表,如图9,学号为123453,课程号为567890对应的成绩从99分修改为80分,与操作情况相符。

9 验证更新功能

 

      将学号为123458,课程号为567891对应的成绩删除,如图10所示。

10 删除成绩

 

      查看gradelog表,如图1,学号为123458,课程号为567891对应的成绩被删除,与操作情况相符。

11 验证删除功能

 

(3)编写存储过程程序实现统计各课程不及格学生人数,并在屏幕输出;

    首先创建存储过程,创建代码及结果如图12所示。

12 创建存储过程

 

        接下来调用该存储过程,显示结果,如图13所示。与实际不及格人数比对,输出结果正确。

13 调用存储过程

三、挑战性问题解决

针对成绩管理系统数据库应用访问,编写Java Web应用程序实现成绩查询功能,即输入课程名,查询该班学生成绩表页面输出。(建议使用MyBatis框架实现数据访问)。