欢迎来到天天文库
浏览记录
ID:40004975
大小:2.34 MB
页数:33页
时间:2019-07-17
《[计算机软件及应用]sqlsere11-存储过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、存储过程本讲内容SQL注入以及解决方法了解存储过程的优点掌握如何创建存储过程掌握如何调用存储过程SQL风险分析数据库结构的暴露有多大危险?等于一个富人告诉了小偷他家的位置,还告诉了他家有几个门,每个门锁有何特征,小偷剩下要做的就只剩配钥匙了。非法用户如何顺利逃避验证?奇怪现象奇怪现象分析输入值分析用户名:sino’--用户名:’or1=1--用户名:’or1=1;updatesystemusersetuserpwd=22--根源SQL注入攻击SQL注入攻击SQLinjection,台湾称作SQL
2、资料隐码攻击),简称注入攻击是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的数据字符串之中夹带SQL指令,在设计不良的程序当中忽略了检查,那么这些夹带进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此招致到破坏。解决办法封装后,存放数据库服务器,前台调用。福建师范大学软件人才培养基地若该SQL语句的代码量很多select*fromaccountwhereusername=‘..'anduserpassword=‘…‘…同时在某个时刻有成千上万的用户要登陆这个系统,这时候将
3、增大网络的流量封装的意义后台性能降低网络堵塞服务器用户前台用户前台……用户前台结果返回处理封装的意义福建师范大学软件人才培养基地封装的意义存储过程概念存储过程(StoredProcedure)类似于C语言中的函数是一组编译好的、存储在服务器上的、能完成特定功能的T-SQL语句集合,设计数据库的一种对象;存储过程可以带参数,也可以返回结果存储过程概念存储过程可以包含数据操纵语句、变量、逻辑控制语句等使用存储过程与函数优点可重用性一旦命名并保存在数据库以后,任何应用都可以调用抽象和数据屏蔽用户只需知
4、道存储过程与函数对外提供的功能,而无需知道其内部实现安全性通过存储过程与函数提供数据对象的操作权限,而不必给出存储过程与函数涉及到每个对象的权限,提高了安全性执行速度快通过缓存计划并在重复执行时重用来降低t-sql代码的编译开销。减少网络流量疑问存储过程和用户自定义函数都是将sql代码组织成为可以重复调用的代码块,在服务器端编译执行,那他们有什么区别呢?存储过程和函数函数缺陷一:对于外部数据库的业务操作例如:增删改;无法通过自定义函数封装;大家试想函数都是通过select调用,其无法独立运行;而
5、相比存储过程可以独立执行业务处理。存储过程和函数函数缺陷二:函数返回结果集不能返回多个;而存储过程可以。换句话说存储过程实现了函数不可实现的操作。创建存储过程创建存储过程语法形式如下:createPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE
6、ENCRYPTION
7、RECOMPILE,ENCRYPTION}][FORREPLI
8、CATION]ASsql_statement[...n]存储过程调用Exec存储过程名[参数1,参数2]案例一创建一存储过程显示用户信息创建一存储过程,实现用户登录验证(该存储过程有待登录框验证用户合法性使用)存储过程名称P_check输入参数@uname--用户名@upassword--密码返回值满足条件的用户信息--创建存储过程createprocedureproc_check@unamechar(10),@upasswordchar(10)asselect*fromuserswhereun
9、ame=@unameandupsd=@upasswordgo--调用存储过程,测试封装语句是否正确实现功能。execproc_check'jyl','123'案例二创建存储过程显示用户信息存储过程名称P_list输入参数无返回值表存储过程名称P_listinfo输入参数@uname–用户名返回值输入的用户名对应的用户信息)2.创建如下存储过程实现用户信息查询a.存储过程p_list:实现’查询all’:将所有用户信息显示b.存储过程实现‘查询’:模糊查询指定用户名信息createprocp_li
10、stasselect*fromaccountgoexecp_list--exec执行存储过程createprocp_list1@unamevarchar(10)asselect*fromaccountwhereusernamelike'%'+@uname+'%'goexecp_list1'su'思考普通用户无法理解提示的含义,所以需要开发人员转化成可理解的业务提示。可选解决办法:通过状态返回;前台读取状态值转换为用户可理解的错误提示。带参数输出存储过程修改存储过程p_add,如果输入的用户存在,
此文档下载收益归作者所有