预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

SQLServer数据库安全机制 一SQLServer数据库 SQLServer数据库是微软公司的一款关系型数据库系统。它专门为分布式客户机/服务器计算所设计的一个出众的数据库管理平台。它的优势是可扩展性,高性能管理,支持堆成多处理结构,ODBC和存储过程,强壮的事物处理能力,支持SQL语句。其中SQL语句可以执行如从数据库中提取数据,更新、删除数据库中的数据等等各种各样的操作,可以用来完成几乎所有的数据库操作。 二、数据库的安全机制 数据库的安全性是指保护数据库避免不合法的使用,以免数据的泄漏、更改或破坏。数据库安全机制是多层次,具体可以划分为用户、数据库管理系统(DBMS)、操作系统(OS)、数据库(DB)四个层次。对于用户部分的安全机制采用身份认证方法;数据库管理系统则是通过访问控制保证资料安全性和审计实时监视和记录用户的行为,任何一个用户意图控制一个对象都必须拥有相应的授权同时用户的行为也将被监视和记录;在操作系统级的安全控制主要侧重于文件权限保护,系统资源使用限制;在数据库存储这一级目前大多采用加密技术,对数据进行加密,在数据传输时可以对数据协议进行加密,为了防止数据库意外破坏,有备份恢复策略。 (一)用户层次 数据库用户名是连接数据库、存取数据库对象的主体标记,是数据库中管理权限和控制数据访问的一种安全措施,用户认证就是确定所要求的用户身份的正确性,口令识别是数据库身份认证中最常用的方式。 对于身份验证模式,SQLServer提供了两种认证方式:Windows身份验证和SQLServer身份验证。Windows身份验证模式,即使用Windows中的其中一个用户登录到SQLServer数据库中。SQLServer身份验证即使用创建用来登陆数据库的身份进行验证。 而在远程以WEB形式登陆数据库的时候,同样要进行身份识别。SQL注入攻击是黑客最常见的攻击数据库的手段。SQL注入攻击是攻击者把SQL语句插入到Web表单的输入域或页面请求查询字符串中,欺骗服务器执行恶意SQL语句的操作。 防治SQL注入的方法:1.把用户验证的SQL语句构造到存储过程中是行之有效的方法,例如构建存储过程,只有用户名正确和密码正确才能够登陆,同时将输入的数据使用Cast()函数转换成一个整体进行验证。 CreateProcedureProcIsUserValid @UserNameVarchar(32), @PasswordVarchar(32) As SelectCount(*)fromUsers WhereCast(UserNameAsVarchar(32))=Cast(@UserNameAsVarchar(32)) AndCast(PasswordAsVarbinary)=Cast(@PasswordAsVarbinary) Go 2.对输入的验证信息进行严格的格式审查,排查字符”or”,”and”,”=”等,一旦遇到,可以拒绝登陆。 (二)数据库管理系统层次 主要包括访问控制、数据库审计、视图机制 (1)访问控制 数据库访问控制(accesscontrol)是对用户访问数据库各种对象(包括表、视图、目录、应用等)的权限(包括创建、撤销、查询、增加、删除、修改、执行等)的控制,可以通过用户分类和数据分类实现。访问控制是数据库安全系统中的核心技术,主要包括系统授权、确定访问权限和实施权限三个部分,是数据库管理系统最有效的安全手段。 基于角色的权限管理可以有效的对用户进行权限管理。如下例子所示: USEclass --创建角色r_test EXECsp_addrole'r_test' --授予r_test对Student表的所有权限 GRANTselect,delete,updateONStudentTOr_test --授予角色r_test对Course表的SELECT权限 GRANTSELECTONCourseTOr_test --添加登录l_test,设置密码为123,默认数据库为class EXECsp_addlogin'l_test','123','class' --为登录l_test在数据库class中添加安全账户u_test EXECsp_grantdbaccess'l_test','u_test' --添加u_test为角色r_test的成员 EXECsp_addrolemember'r_test','u_test' --拒绝安全账户u_test对Course表的SELECT权限 DENYSELECTONCourseTOu_test 执行命令,用l_test登陆数据库,能够看到角色r_test和用户u_test,如图一所示,可以对Student表进行所有操作,如图二和图三:但无法对Course表查询,虽然角色r_te