无疑,Procedure是一重大课题 。。
对于自定义Procedure,之前没有操作SQL-Server的经验 ,但是写Procedure却是比较熟手的,也是拜高老师所赐吧..
下面是一个之前程序用过的prodecure, 里面包括传入、传出的参数设置。
/****** Object: Stored Procedure dbo.pro_CheckAdminLogin Script Date: 2004-6-4 16:37:25 ******/
CREATE PROCEDURE pro_CheckAdminLogin
(
@username nvarchar(20),
@password char(32),
@lastloginip char(15),
@output int output
)
AS
if exists(Select id from admin where username=@username and password=@password)
begin
update admin set lastLoginIP=@lastloginip,lastlogintime=getdate() where username=@username
set @output=0 --验证通过
end
else
begin
set @output=-1 --帐号密码不正确
end
GO
-----------
//
//Alter
Alter procedure Pro_procedureName
as
[SQL statements]
//Drop
Drop procedure pro_ProcedureName
通过阅读,了解到MS-SQLserver 的procedure 是可以加密的
例
对于自定义Procedure,之前没有操作SQL-Server的经验 ,但是写Procedure却是比较熟手的,也是拜高老师所赐吧..
下面是一个之前程序用过的prodecure, 里面包括传入、传出的参数设置。
/****** Object: Stored Procedure dbo.pro_CheckAdminLogin Script Date: 2004-6-4 16:37:25 ******/
CREATE PROCEDURE pro_CheckAdminLogin
(
@username nvarchar(20),
@password char(32),
@lastloginip char(15),
@output int output
)
AS
if exists(Select id from admin where username=@username and password=@password)
begin
update admin set lastLoginIP=@lastloginip,lastlogintime=getdate() where username=@username
set @output=0 --验证通过
end
else
begin
set @output=-1 --帐号密码不正确
end
GO
-----------
//
//Alter
Alter procedure Pro_procedureName
as
[SQL statements]
//Drop
Drop procedure pro_ProcedureName
通过阅读,了解到MS-SQLserver 的procedure 是可以加密的
例
Create procedure P_XXX
with encryption
as
[SQL statements]
go
with encryption
as
[SQL statements]
go
Procedure的好处:
系统有预编译 即编译1次,大大提高效益
某些业务规则可在procedure里面完成, 方便修改(不需改源前后台程序)
当然,还有我才知道的加密--安全性提高 Encryption
SQL-server还提供系统Procedure(sp_)和扩展Procedure(xp_)
利用系统存储过程新添用户的例子:
EXEC sp_addlogin 'LALA_ConnectName','PWD','DB_Name'
go
----
相对也明白了,具有SA权限后 利用扩展Procedure可以操作windows命令行解释器,
Use Master [<--Master数据库是 SQL-server存放系统procedure的数据库]
go
EXEC xp_cmdShell 'dir C:\*.exe'
这个XP_CmdShell就是在SQLserver系统执行命令行的方法
估计前段时间Hack最多的SQL injected,多半是成功注入后利用这里进行下一步权限探讨..