各种权限设置
对象权限
处理数据或执行过程时需要称为对象权限的权限类别:
·SELECT、INSERT、UPDATE和DELETE语句权限,它们可以应用到整个表或视图中。
·SELECT和UPDATE语句权限,它们可以有选择性地应用到表或视图中的单个列上。
·SELECT权限,它们可以应用到用户定义函数。
·INSERT和DELETE语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。
·EXECUTE语句权限,它们可以影响存储过程和函数。
语句权限
创建数据库或数据库中的项(如表或存储过程)所涉及的活动要求另一类称为语句权限的权限。例如,如果用户必须能够在数据库中创建表,则应该向该用户授予CREATETABLE语句权限。语句权限(如CREATEDATABASE)适用于语句自身,而不适用于数据库中定义的特定对象。
语句权限有:
·BACKUPDATABASE
·BACKUPLOG
·CREATEDATABASE
·CREATEDEFAULT
·CREATEFUNCTION
·CREATEPROCEDURE
·CREATERULE
·CREATETABLE
·CREATEVIEW
暗示性权限
暗示性权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。例如,sysadmin固定服务器角色成员自动继承在SQLServer安装中进行操作或查看的全部权限。
数据库对象所有者还有暗示性权限,可以对所拥有的对象执行一切活动。例如,拥有表的用户可以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进行操作的权限。
db_owner在数据库中有全部权限。
db_Accessadmin可以添加或删除用户ID。
db_securityadmin可以管理全部权限、对象所有权、角色和角色成员资格。
db_ddladmin可以发出ALLDDL,但不能发出GRANT、REVOKE或DENY语句。
db_backupoperator可以发出DBCC、CHECKPOINT和BACKUP语句。
db_datareader可以选择数据库内任何用户表中的所有数据。
db_datawriter可以更改数据库内任何用户表中的所有数据。
db_denydatareader不能选择数据库内任何用户表中的任何数据。
db_denydatawriter不能更改数据库内任何用户表中的任何数据。
在这儿把新建的数据库角色的权限配置好,比如需要使用哪个表、视图、存储过程等。然后把Db_owner和db_securityadmin、db_backupoperator取消,不给攻击者BACKUPDATABASE和CREATETABLE的机会,一但攻击者具有这两个权限,那么你的网站就还处在十分危险的状态。还有注意一下,在创建数据库账号时,千万不能对服务器角色进行选择。
第四步是修改SQLSERVER内置存储过程。SQLSERVER估计是为了安装或者其它方面,它内置了一批危险的存储过程。能读到注册表信息,能写入注册表信息,能读磁盘共享信息等等。。.。。.各位看到这儿,心里可能会在想,我的网站中有其它的代码,又不像查询分析器那样能查接将结果输出。给你这个权限,又不能怎么样,还是看不到信息。如果各位这样想就大错特错了。提示一下,如果攻击者有CREATETABLE的权限,那么创建一个临时表,然后将信息INSERT到表中,然SELECT出来,接着跟数字进行比较,让SQLSERVER报错,那么结果就全出来了。。.。。.所以我们要报着宁错杀,不放过的态度进行修补。
先来列出危险的内置存储过程:
xp_cmdshell
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumkeys
xp_regenumvalues
xp_regread
xp_regremovemultistring
xp_regwrite
ActiveX自动脚本:
sp_OACreate
sp_OADestroy
sp_OAMethod
sp_OAGetProperty
sp_OASetProperty
sp_OAGetErrorInfo
sp_OAStop
将有安全问题的SQL过程删除。比较全面。一切为了安全!
网友评论