SQL Server 禁用扩展存储过程
概述
扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL。扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运行。扩展存储过程可能会产生内存泄漏或其他降低服务器的性能及可靠性的问题。固定服务器角色 sysadmin 的成员可以使用 SQL Server 实例来注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到 master 数据库中。有一些系统自带的扩展存储过程操作的权限非常的高,包括修改注册表和修改文件的权限,比如“xp_cmdshell”。为了保证数据库的安全需要将这部分扩展存储过程给禁用。如果你们公司需要面临ICP备案的话那么这个事情是必须要做的。
需要禁用的扩展存储过程包括:
SELECT object_name,state from sys.system_components_surface_area_configuration
WHERE state=1 and object_name IN (
'xp_regdeletevalue',
'xp_regremovemultistring',
'xp_regwrite',
'xp_regaddmultistring',
'xp_regdeletekey',
'xp_enumerrorlogs',
'xp_enumgroups',
---不中视图中
'xp_loginconfig',
'xp_getfiledetails',
'xp_regenumvalues',
'sp_makewebtask',
---对应系统外围配置'xp_cmdshell'
'xp_cmdshell',
---对应系统外围配置'Ole Automation Procedures'
'Sp_OACreate',
'Sp_OADestroy',
'Sp_OAGetErrorInfo',
'Sp_OAGetProperty',
'Sp_OAMethod',
'Sp_OASetProperty',
'Sp_OAStop'
)
一、禁用扩展存储过程
有一些扩展存储过程它是属于服务器外围配置选项,可以使用sp_configure来开启和禁用。例如xp_cmdshell
---开启xp_cmdshell
sp_configure 'show advanced options', 1;
GO
sp_configure 'allow updates',0 ---开启允许更新系统表,当更改系统配置选项时提示不运行对系统目录即时更新时需要开启改功能
go
reconfigure;
go
sp_configure 'xp_cmdshell', 1;----开启xp_cmdshell
go
reconfigure;
go
sp_configure 'allow updates',1----关闭更新系统表功能
go
sp_configure 'show advanced options', 0; go
---关闭xp_cmdshell
sp_configure 'show advanced options', 1;
GO
sp_configure 'allow updates',0 ---开启允许更新系统表
go
reconfigure;
go
sp_configure 'xp_cmdshell', 0;----关闭xp_cmdshell
go
reconfigure;
go
sp_configure 'allow updates',1----关闭更新系统表功能
go
sp_configure 'show advanced options', 0;
二、拒绝授予扩展存储过程的可执行权限
而除了系统外围配置选项涉及的扩展存储过程可以通过sp_configure开启和禁用之外,剩下的系统扩展存储过程只能通过拒绝授予可执行权限的方式来禁用。
从SQLServer2005开始就不能通过sp_dropextendedproc 删除系统扩展存储过程
可以通过拒绝 public 角色对扩展存储过程的 EXECUTE 权限
select 'DENY EXECUTE ON '+object_name+' TO public',object_name,state from sys.system_components_surface_area_configuration
WHERE state=1 and object_name IN (
'xp_regdeletevalue',
'xp_regremovemultistring',
'xp_regwrite',
'xp_regaddmultistring',
'xp_regdeletekey',
'xp_enumerrorlogs',
'xp_enumgroups',
---不中视图中
'xp_loginconfig',
'xp_getfiledetails',
'xp_regenumvalues',
'sp_makewebtask',
---对应系统外围配置'xp_cmdshell'
'xp_cmdshell',
---对应系统外围配置'Ole Automation Procedures'
'Sp_OACreate',
'Sp_OADestroy',
'Sp_OAGetErrorInfo',
'Sp_OAGetProperty',
'Sp_OAMethod',
'Sp_OASetProperty',
'Sp_OAStop'
);
三、查询权限
USE MASTER
;
WITH CET AS(
SELECT 'DENY EXECUTE ON '+object_name+' TO public' AS DenySQL,object_name,state from sys.system_components_surface_area_configuration
WHERE state=1 and object_name IN (
'xp_regdeletevalue',
'xp_regremovemultistring',
'xp_regwrite',
'xp_regaddmultistring',
'xp_regdeletekey',
'xp_enumerrorlogs',
'xp_enumgroups',
---不中视图中
'xp_loginconfig',
'xp_getfiledetails',
'xp_regenumvalues',
'sp_makewebtask',
---对应系统外围配置'xp_cmdshell'
'xp_cmdshell',
---对应系统外围配置'Ole Automation Procedures'
'Sp_OACreate',
'Sp_OADestroy',
'Sp_OAGetErrorInfo',
'Sp_OAGetProperty',
'Sp_OAMethod',
'Sp_OASetProperty',
'Sp_OAStop'
)
) SELECT A.name,schema_name(A.schema_id) [schema],A.type,b.permission_name,B.type,B.state_desc,C.name,c.type_desc
FROM sys.all_objects AS A
LEFT JOIN sys.database_permissions AS B ON B.major_id=A.object_id AND B.minor_id=0 AND B.class=1
LEFT JOIN sys.database_principals AS C ON C.principal_id = B.grantee_principal_id
where A.name IN(SELECT object_name FROM CET)
ORDER BY A.name
参考:http://blog.csdn.net/kk185800961/article/details/52188556
参考:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-dropextendedproc-transact-sql
总结
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。 《欢迎交流讨论》 |
SQL Server 禁用扩展存储过程的更多相关文章
- sql server中扩展存储过程
--列出服务器上安装的所有OLEDB提供的程序 execute master..xp_enum_oledb_providers --得到硬盘文件信息 --参数说明:目录名,目录深度,是否显示文件 (少 ...
- Sql Server系列:存储过程
1 存储过程简介 存储过程是使用T-SQL代码编写的代码段.在存储过程中,可以声明变量.执行条件判断语句等其他编程功能.在MS SQL Server 2012中存储过程主要分三类:系统存储过程.自定义 ...
- SQL Server基础之存储过程
简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理.本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作. 一:存储过程概述 ...
- 【SQL Server】SQL Server基础之存储过程
SQL Server基础之存储过程 阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...
- (转)SQL Server基础之存储过程(清晰使用)
阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程 简单来说,存储过程就是一条或 ...
- 理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程
本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(1)--简介 本文介绍SQL Server如何编译存储过程并使用计划缓存 ...
- Sql Server数据库之存储过程
阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程 简单来说,存储过程就是一条或 ...
- SQL Server 2000 系统存储过程
SQL Server 2000 系统存储过程 在 Microsoft? SQL Server? 中,许多管理和信息活动可以通过系统存储过程执行.系统存储过程按这些分类分组. 分类 描述 Active ...
- SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨
SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢 ...
随机推荐
- 小tip:生成一组不重复的随机数(去重的方法)
var arr = []; for(var i=0;i<150;i++){ // num为0-100的随机数 var num = Math.round(Math.random()*100); v ...
- ps的快捷键
最近学习了一些ps切图,总结一些快捷键,以免自己忘记,总结的不好,也可能不全,忘大牛指点,试着坚持总结 1.工具箱 (多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取) 矩形.椭圆选框工具 ...
- 介绍一个法国的时间戳server
特别说明: 以下介绍的法国时间戳server已经停止服务了.我曾发Email给相关站点的管理员.对方回复说他也不知道什么时候能恢复服务,有可能就是遥遥无期了.所以以下的内容仅有參考价值.没法实践了. ...
- Linux批量杀死包括某个keyword的进程
ps -ef|grep ./amplxe-gui|grep -v grep|cut -c 9-15|xargs kill -9 批量杀死包括keyword"./amplxe-gui" ...
- JAVA-UML
UML(UnifiedModelingLanguage)(统一建模语言或标准建模语言) 它是模型化的软件系统开发图形语言 为软件开发所有阶段提供模型化,可视化支持 UM2.2中定义了14中图示 三种常 ...
- thinkphp5基础
前面的话 ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持 ...
- url特殊字符转义及解决方法
URL特殊字符需转义 1.空格换成加号(+) 2.正斜杠(/)分隔目录和子目录 3.问号(?)分隔URL和查询 4.百分号(%)制定特殊字符 5.#号指定书签 6.&号分隔参数 转义字符的原因 ...
- linux vi/vim编辑文件显示行号
方法一(最尴尬的方法): 1.显示当前行行号,在VI的命令模式下输入 :nu 2.显示所有行号,在VI的命令模式下输入 :set nu #这是:set number 的简写 方法二(最好的方法): 使 ...
- JavaScript:inherits
网上一查,肯定搜索到继承的文章真心不少.我这里就只说一下自己常用的方式: 通常 在编写一个类的做法是,在构造函数里声明字段,在prototype里指定方法. //step1: 在子类的构造器里法里实例 ...
- tomcat启动端口号报错java.net.BindException: Cannot assign requested address
异常信息 时间:2017-02-09 15:09:59,829 - 级别:[ERROR] - 消息: [other] Failed to start end point associated with ...