点滴积累,融会贯通

-----喜欢一切有兴趣的东西

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
无疑,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


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,多半是成功注入后利用这里进行下一步权限探讨..

posted on 2006-02-08 10:05  小寒  阅读(494)  评论(0编辑  收藏  举报