APP下载

数据库教学中提升安全意识与能力探析

2017-07-29岳清

电脑知识与技术 2017年12期
关键词:审计安全加密

岳清

摘要:安全在数据库信息系统中占有重要意义,当前高校计算机专业学生在开发基于数据库的应用系统时,更多关注于系统功能实现,而安全意识和能力不足。针对这个现象,分析了数据库课程中涉及的安全知识,探索教学中贯穿安全教育的方法,为提升学生的安全意识与能力奠定了基础。

关键词:数据库;安全;教学;加密;审计;SQL注入

1概述

数据库课程是计算机及相关专业的一门重要课程。通过这门课程,学生掌握数据库的基本理论、SQL编程、数据库设计与管理等重要内容,为从事数据库应用系统的设计、开发、维护等相关工作打下基础。很多学生在开发基于数据库的应用系统中,更多关注的是如何实现系统功能,少有信息安全和数据库安全意识和能力。从目前社会看,安全问题是一个热点,如果一个软件产品安全性出现漏洞,用户数据泄露,就会引发大众对隐私信息的担忧。如何提高系统的安全性是系统开发和建设者关注的重点。本文阐述在基于SQL Server的数据库课程教学中提高数据库安全性和系统安全性的教学方法,以达到提升学生的安全意识与能力目的。

2数据库教学中安全内容和方法

数据库课程内容通常涵盖了数据库基本概念、数据模型、数据库操作、数据库设计、数据库编程和管理这几个部分,安全贯穿在其中。以下将主要阐述数据库设计、编程和管理中的涉及的安全教学内容和教学方法。

2.1角色功能最小化

在数据库课程中安全管理这一章节会讲授到用户和角色,这一环节不仅局限于用户和角色概念、关系,为用户指派角色等操作,还要介绍当用户被授予超出了其工作职能所需的数据库访问权限时,这些权限可能会被恶意滥用。解决方法是使用充分细化的查询级别访问控制机制,这种机制这是将数据库权限限制到最低要求的SQL操作和数据。数据访问控制不只细化到表,而是必须细化到表中特定的行和列。当角色细化,用户的功能最小化,滥用过高权限这个问题就解决了。在教学过程中,可以设计一个简单的学生成绩单的数据库,细化学生、辅导员、任课教师、教务管理员不同角色对应的功能,可以细化到表、视图、表中特定的行和列,以及在这些细化的对象上进行的各种操作。

2.2以密文方式存储关键数据

具有登录功能系统的数据库中存放了用户名和密码信息。“密码”这样重要的信息在数据库中不应该明文存储,是应该以密文的方式存储。即使信息被窃取了,也会降低损失。在这一环节的授课中,先介绍SQL Server的加密层次,然后从最外层依次向内搭建加密体系,最后完成对关键词段的加密。

目前在数据库加密中应用较多的是多级密钥管理体系。SQL Server的加密层次如图l所示,也是多级密钥管理体系。在层次体系中由外到内依次是:服务主密钥SMK(Service Mastcr Key),数据库主密钥DMK(Database Master Key),证书、非对称密钥和密钥,对称密钥,加密数据。每一个数据库实例都拥有一个服务主密钥SMK,是安装SQL Server时自动生成的,这个密钥是整个实例的根密钥,为其子节点提供加密服务,SMK是SQL Server加密层次结构的根,直接或间接地保护树中的所有其他密钥和机密内容。在服务主密钥之下的是数据库主密钥DMK,一个数据库只能有一个数据库主密钥,这是一个数据库级别的密钥。当数据库主密钥创建成功后,我们就可以使用这个密钥创建对称密钥,非对称密钥和证书了。证书和非对称密钥都属于非对称加密的使用方式,证书通常包含更多信息,例如过期日期和颁发者,通常,可以使用证书来加密数据库中其他类型的加密密钥,或者为代码模块签名。由于证书和非对称密钥使用非对称加密算法,算法复杂,加密解密的速度慢,因此当加密的信息量大的时候不适合。对称密钥相对算法简单,加密解密的速度快,由层级图可以看出,最终对数据进行加密的就是对称密钥,为了进一步提高安全性,可以由非对称密钥或证书加密的对称密钥。最内层就是对称密钥加密数据库表中特定字段。在这个教学环节中,可让带领学生创建服务主密钥SMK、数据库主密码、非对称密鑰或证书,然后再创建由非对称密钥或证书加密的对称密钥,最后用对称密钥加密数据库表中的数据,比较加密前后的数据,看到明文和密文的不同。这个过程不仅帮助学生理解加密层次还可以直观看到“密码”这样重要信息是密文存储的。

2.3强身份验证

即使数据库表中“密码”这样的关键数据可以通过加密方式以密文存储,但是无论是何种方式访问数据库,如果密码设置的太简单,都是不安全的。强身份验证也是数据库的一道保护屏障。目前“双因素”认证机制被公认为最安全的身份认证方式,这种认证方式是指结合密码以及实物(信用卡、SMS手机、令牌或指纹等生物标志)两种条件对用户进行认证的方法。但是,由于成本和易用性问题,双因素身份验证通常不现实。在这些情况下,应该实施强用户名/密码策略,如:限定密码字符多样性,限定密码最小长度等等。在教学中可以让学生在课后去调研网上的系统用户注册通常对密码有什么要求,什么样的系统采用“双因素”认证机制。这样的调研活动对将来从系统设计与开发有帮助。

2.4SQL注入

在基于B/S模式系统中,用户从前端登录访问后台的数据库,应用了强身份验证和关键信息加密,安全性得到提高。但是依然存在导致数据库信息泄露甚至是系统崩溃的威胁一SQL注入。SQL注入是利用网页自身的安全漏洞进行攻的一种常用方法,恶意用户输入数据来构造SQL查询语句,如果程序编写时,没有对用户输入数据的合法性进行判断,用户就可以利用某些提交数据页面或修改数据页面里的漏洞,精心构造SQL语句,让系统执行此类特殊的SQL指令,从而获取一些敏感信息,甚至获取主机控制权限。SQL注入成功后,造成的危害也很严重:不仅数据库中的信息会被盗取,Web服务器数据库对象也可能受损,使得网站瘫痪,甚至可以上传木马,被攻击的计算机就处于被控制状态了,SQL注入的影响是非常大的。

在这一教学环节中,教师可以先演示一个SQL注入,如:在登录页面的用户名和密码输入框中,输入:“'mike'or 1=1-”和“abc”,一个没有防SQL注入的系统,会构造出“select*from users where userID='mike'or 1=1-and psd='abc'”,在這个语句中,条件永远为真,达到了欺骗系统,成功登录。

SQL注入的原因就是将SQL命令通过“嵌入”的方式放人合法的HTYP提交请求中,解决方式主要有:

1)使用正则表达式过滤传人的参数

正则表达式是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。目标是过滤输入中能够引起SQL注入的字符或单词。

2)使用预编译语句

如果使用预编译语句,传人的任何内容就不会和原来的语句发生任何匹配的关系,就用不着对传人的数据做任何过虑”。这是很常用的防SQL注入的方法。

教学中,可以用上述两种方法对有缺陷的,能够SQL注入的系统进行改进,再有同样的方法登录,无法“欺骗”系统了。

2.5存储过程

存储过程是数据库中重要的对象,在讲授其特点的时候,不仅提到执行速度快,第一次执行后的存储过程会驻留在高速缓存中,以后直接调用;提高代码的重用性,减少网络流量,用户可以通过发送一条执行存储过程的语句实现一系列复杂的操作,而不需要写上大量的SQL代码,而且存储过程在被创建后,可以在程序中被多次调用。还要强调存储过程提供了安全机制,SQL Server可以不授予用户直接访问表、视图的权限,而是授权用户执行该存储过程,这样可以防止把数据库中表的细节暴露给用户,保证表中数据的安全性。

2.6数据库的审计

数据库课程中数据库管理部分涉及审计。审计,即检查、验证目标的准确性和完整性,用以防止虚假数据和欺骗行为。数据库审计是数据库安全的一部分。审计主要有两个目的,一个是检测和威慑非法进入系统的行为;另一个是识别出用户对系统的误用。通过审计功能,凡是与数据库安全性相关的操作均可被记录下来。只要检测审计记录,系统安全员便可掌握数据库被使用状况。在SQL SERVER中,系统包含三种级别的审计:服务器级别、数据库级别和审计级别。服务器级别的审计记录服务器操作,例如管理更改以及登录和注销操作。数据库级别的审计管理数据操作语言和数据定义语言的操作。审核级别的审计管理包括审核过程中的操作。这一教学环节中可以带领学生建立上述三种级别的审计,启动审计后,在数据库中新建用户和角色,新建用户表,添加、修改删除数据,然后查看审核日志,可以看到这些操作留下的痕迹。

2.7备份数据暴露

为了提交安全陸,数据库需要定期的备份。在实际教学过程中,通常要讲授备份的种类和备份还原操作,而忽视备份数据的暴露带来的危险,如果得到了一份完全数据库备份,只需简单的还原,那么所有的数据就清晰地呈现出来。因此在教学中要强调备份数据一定要加密。

3结论

本文介绍了数据库课程中的几个教学环节。在实际的教学中,教师通过理论讲解、实例演示、课后练习和实验多个环节将安全融人到课程中,提升学生安全意识和能力,也为学生今后从事相关数据库开发工作奠定了基础。

猜你喜欢

审计安全加密
一种基于熵的混沌加密小波变换水印算法
认证加密的研究进展
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密