本文转自 boyi55 51CTO博客,原文链接:http://blog.51cto.com/boyi55/38915
管理扩展存储过程
from:[url]http://bbs.51cto.com/thread-437-1-3.html[/url]
对存储过程进行大手术,并且对帐号调用扩展存储过程的权限要慎重。
其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,
所以请删除不必要的存储过程,
因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。
如果你不需要扩展存储过程xp_cmdshell请把它去掉。使用这个SQL语句:
use master
sp_dropextendedproc 'xp_cmdshell'
xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。
如果你需要这个存储过程,请用这个语句也可以恢复过来。
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
如果你不需要请丢弃OLE自动存储过程(会造成管理器中的某些特征不能使用),这些过程包括如下:
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来,如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue
Xp_regenumvalues Xp_regread Xp_regremovemultistring
Xp_regwrite
还有一些其他的扩展存储过程,你也最好检查检查。
在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。
附: Extended Stored Proc Removal and Restore Scripts
1.remove mssql2000 extended stored procedures.sql
use master
exec sp_dropextendedproc 'xp_cmdshell'
go
exec sp_dropextendedproc 'xp_dirtree'
go
exec sp_dropextendedproc 'xp_enumgroups'
go
exec sp_dropextendedproc 'xp_fixeddrives'
go
exec sp_dropextendedproc 'xp_loginconfig'
go
exec sp_dropextendedproc 'xp_regaddmultistring'
go
exec sp_dropextendedproc 'xp_regdeletekey'
go
exec sp_dropextendedproc 'xp_regdeletevalue'
go
exec sp_dropextendedproc 'xp_regread'
go
exec sp_dropextendedproc 'xp_regremovemultistring'
go
exec sp_dropextendedproc 'xp_regwrite'
go
exec sp_dropextendedproc 'xp_enumerrorlogs'
go
exec sp_dropextendedproc 'xp_getfiledetails'
go
exec sp_dropextendedproc 'xp_regenumvalues'
go
2.restore mssql2000 extended stored procedures.sql
use master
exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
go
exec sp_addextendedproc 'xp_dirtree', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_enumgroups', 'xplog70.dll'
go
exec sp_addextendedproc 'xp_fixeddrives', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_loginconfig', 'xplog70.dll'
go
exec sp_addextendedproc 'xp_regaddmultistring', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_regdeletekey', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_regdeletevalue', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_regread', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_regremovemultistring', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_regwrite', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_enumerrorlogs', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_getfiledetails', 'xpstar.dll'
go
exec sp_addextendedproc 'xp_regenumvalues', 'xpstar.dll'
go,如需转载请自行联系原作者