失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SQL Server中视图 存储过程 注入

SQL Server中视图 存储过程 注入

时间:2019-01-22 20:29:31

相关推荐

SQL Server中视图 存储过程 注入

文章目录

一.视图1.视图的概念(1)视图的数据(2)表视图的多样性(3)视图的用途2.视图的使用1>视图的创建(1)使用图文创建视图(2)使用T-SQL创建视图2> 删除视图使用T-SQL删除3>视图注意事项二.存储过程1.存储过程概念:2.存储过程分类1>系统存储过程2>自定义存储过程3>扩展存储过程3.调用存储过程4.创建自定义存储过程5.存储过程优点三.SQL注入1.SQL注入概念2.如何防止SQL注入(1)不要使用动态SQL(2)不要将敏感数据保留在纯文本中(3)限制数据库权限和特权(4)避免直接向用户显示数据库错误(5)使用Web应用程序防火墙(WAF)(6)将数据库更新为最新的可用修补程序

一.视图

1.视图的概念

是存储在服务器端的一个查询块,是一张虚拟表表示一张表的部分数据或多张表的综合数据其结构和数据是建立在对表的查询基础上视图的使用,跟普通数据表的查询使用完全一样

(1)视图的数据

数据存放在视图所引用的原始数据表中

(2)表视图的多样性

一个或多个原始数据表,根据不同用户的不同需求,可以创建不同的视图

(3)视图的用途

① 筛选表中的行② 防止未经许可的用户访问敏感数据③ 降低数据库的复杂程度④ 将多个物理数据库抽象为一个逻辑数据库

2.视图的使用

1>视图的创建

(1)使用图文创建视图

选择对应的数据库,视图右键‘新建视图’,选择要结合的表,保存生成视图

(2)使用T-SQL创建视图

语法格式:

CREAT VIEW 视图名称ASSELECT 语句

案例:

CREATE VIEW StudentScoreASSELECT Student.SId,Student.Sname,class1,class2,class3 FROM Student JOIN(SELECT t1.SId,class1,class2,class3 FROM(SELECT SId , score as class1 FROM Sc WHERE CId=3001)t1,(SELECT SId, score as class2 FROM Sc WHERE CId=3002)t2,(SELECT SId, score AS class3 FROM Sc WHERE CId=3003)t3 WHERE t1.SId=t2.SId AND t2.SId=t3.SId)rON Student.SId=r.SId

查看:

SELECT*FROM StudentScore

结果:

2> 删除视图

使用T-SQL删除

语法格式:

IF EXISTE (SELECT * FROM sysobjects WHERE name='视图名')DROP VIEW 视图名

3>视图注意事项

视图中可以使用多个表一个视图可以嵌套另一个视图(尽量少用)视图定义中的SELECT语句不能包括下列内容

① ORDER BY子句,除非在SELECT语句的选择列表中也有一个TOP子句

②INTO关键字

③引用临时表或表变量

二.存储过程

1.存储过程概念:

1.预先存储号的SQL程序

2.保存在SQL Server中(与视图一样)

3.通过名称和参数进行执行

①在数据库服务器端直接调用(DBA)

②供应程序调用(软件开发工程师)

4.可包含数据操纵语句,变量,逻辑控制语句

2.存储过程分类

系统存储过程,自定义存储过程,扩展存储过程

1>系统存储过程

(1)系统存储过程的名称一般以“sp_”开头

(2)用SQL Server创建,管理和使用

(3)存放在master数据库中

/accumulater/p/6223792.html

2>自定义存储过程

由开发人员(DBA)为了实现数据库中的某种操作自定义的一些SQL编程

由用户自定在所操作的数据库中创建的存储过程

1.有无返回值

2.有无参数

3>扩展存储过程

(1)扩展存储过程的名称通常以‘xp_’开头

(2)类型与编程语言(C#)创建的外部存储过程

(3)以DLL形式单独存在

①可以执行Windows中的DOS命名的一些操作

②以文本方式任何输出

xp_cmdshell存储过程

EXEC xp_ cmdshell ’mkdir D: \Product’

执行以上代码需开启权限

登录用户右键选择’方面’(此SQL Server版本为) 选择‘外围应用配置器’,选择‘XPCmdShellEnabled’项改为True

3.调用存储过程

语法格式:

EXECUTE 存储过程名 [参数1],[参数2]..--或者EXEC 存储过程名 [参数]...

4.创建自定义存储过程

语法格式:

CRECT PROCEDURE[PROC] 存储过程名称@参数1 数据类型=默认值 OUTPUT,@参数2 数据类型=默认值 OUTPUT,...@参数n 数据类型=默认值 OUTPUTASSQL语句

存储过程的参数:

(1)参数可选

(2)参数分为输入参数,输出参数(若存储过程有返回值,即OUTPUT标记输出参数)

(3)输入参数允许有默认值,一般带有默认值的输入参数在最后

5.存储过程优点

(1)执行速度更快

(2)允许模块化程序设计

(3)提高系统的安全性

(4)减少网络流通量

(5)视图和存储过程的重要有点:安全且执行速度快

三.SQL注入

1.SQL注入概念

通过把SQL命令插入到表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web 表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

2.如何防止SQL注入

(1)不要使用动态SQL

避免将用户提供的输入直接放入SQL语句中;最好使用准备好的语句和参数化查询,这样更安全。

(2)不要将敏感数据保留在纯文本中

加密存储在数据库中的私有/机密数据;这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。

(3)限制数据库权限和特权

将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。

(4)避免直接向用户显示数据库错误

攻击者可以使用这些错误消息来获取有关数据库的信息。

(5)使用Web应用程序防火墙(WAF)

对访问数据库的Web应用程序使用Web应用程序防火墙(WAF)

这为面向Web的应用程序提供了保护,它可以帮助识别SQL注入尝试;根据设置,它还可以帮助防止SQL注入尝试到达应用程 序(以及数据库)。

(6)将数据库更新为最新的可用修补程序

这可以防止攻击者利用旧版本中存在的已知弱点/错误。

如果觉得《SQL Server中视图 存储过程 注入》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。