当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:20:00  来源:本站整理

针对SQL INJECTION的SQL SERVER安全设置初级篇[MSSQL防范]

赞助商链接



  本文“针对SQL INJECTION的SQL SERVER安全设置初级篇[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

日前SQL INJECTION的攻击测试愈演愈烈,很多大型的网站和论坛都相继被注入.这些网站普通利用的多为sql server数据库,正因为如此,很多人开始猜疑SQL SERVER的安全性.其实SQL SERVER 2000已经通过了美国政府的C2级安全认证-这是该行业所能拥有的最高认证级别,所以利用SQL SERVER还是相当的安全的.当然和ORCAL、DB2等还是有差别,但是SQL SERVER的易用性和遍及性还是能成为我们持续利用下去的来由.那怎么样才能使SQL SERVER的设置让人利用的安心呢?

第一步必定是打上SQL SERVER最新的安全补钉,目前补钉已经出到了SP3.下载地址:http://www.microsoft.com/sql/downloads/2000/sp3.ASP.假如这一步都没有做好,那我们也没有持续下去的必要了.

第二步是改正默许的1433端口,并且将SQL SERVER躲藏.这样能禁止对试图列举网络上现有的 SQL Server 客户端所发出的广播作出呼应.别的,还需求在TCP/IP挑选中将1433端口屏蔽掉,尽大概的躲藏你的SQL SERVER数据库.这模样一但让攻击成立了SQL SERVER的账号,也不能即刻利用查询解析器远程登陆来举行下一步的攻击.单从ASP,PHP等页面构造恶意语句的话,还有需求查看返回值的问题,总比不上直接查询解析器来得利落.所以我们首先要做到即便让别人注入了,也不能让攻击者下一步做得顺当.改正办法:企业管理器 --> 你的数据库组 --> 属性 --> 通例 --> 网络配置 --> TCP/IP --> 属性 ,在这儿将你的默许端口举行改正,和SQL SERVER的躲藏.

第三步是很重要的一步,SQL INJECTION常常在WEB CODE中产生.而做为系统管理员大概数据库管理员,总不能常常的去看每一段代码.即便常常看代码,也不能保证我们在上面的忽视.那怎么办?我们就要从数据库角色着手,让数据库用户的权限划分到最低点.SQL SERVER的默许权限让人真的很头疼,权限大得非常的高,权限小的又什么都做不了,SYSADMIN和db_owner真是让人又爱又恨.攻击者一但确认了网站存在SQL INJECTION漏洞,必定有一步操作步骤就是测试网站的SQL SERVER利用者具有多大的权限.普通城市借助SELECT IS_SRVROLEMEMBER('sysadmin'),大概SELECT IS_MEMBER('db_owner'),再大概用user = 0(让字符和数字举行对比,SQL SERVER就会提醒了错误信息,从该信息中便可知道一些敏感信息)等语句举行测试.办法还有,我也不敢多说了.其一怕错,其二怕同盟中的人扁.在当前,假如网站的数据库利用者用的是SA权限,再加上确认了WEB所处在的绝对途径,那么就宣布了你的网站的OVER.db_owner权限也一样,假如确认了绝对途径,那么有50%的机会能给你的机械中上WEB 方法的木马,如海阳等.所以这儿我们确认了一点,我们必必要成立自已的权限,让攻击者找不着下嘴的地方.在这儿引用一个SQL SERVER联机帮忙中的例子:

成立 SQL Server 数据库角色的办法(企业管理器)
成立 SQL Server 数据库角色
1.        展开服务器组,然后展开服务器.
2.        展开"数据库"文件夹,然后展开要在此中成立角色的数据库.
3.        右击"角色",然后单击"新建数据库角色"号令.
4.        在"名称"框中输入新角色的名称.
5.        单击"增添"将成员增添到"尺度角色"列表中,然后单击要增添的一个或多个用户.(可选)
只有选定数据库中的用户才能被增添到角色中.

对象权限
处理数据或履行历程时需求称为对象权限的权限类别:
·        SELECT、INSERT、UPDATE 和 DELETE 语句权限,它们可以利用到整个表或视图中.
·        SELECT 和 UPDATE 语句权限,它们可以有挑选性地利用到表或视图中的单个列上.
·        SELECT 权限,它们可以利用到用户定义函数.
·        INSERT 和 DELETE 语句权限,它们会影响整行,因此只可以利用到表或视图中,而不能利用到单个列上.
·        EXECUTE 语句权限,它们可以影响存储历程和函数.

[1] [2] [3] 下一页  

语句权限
成立数据库或数据库中的项(如表或存储历程)所触及的活动要求另一类称为语句权限的权限.比方,假如用户必须可以在数据库中成立表,则应当向该用户授与 CREATE TABLE 语句权限.语句权限(如 CREATE DATABASE)实用于语句自身,而不实用于数据库中定义的特定对象.
语句权限有:
·        BACKUP DATABASE
·        BACKUP LOG
·        CREATE DATABASE
·        CREATE DEFAULT
·        CREATE FUNCTION
·        CREATE PROCEDURE
·        CREATE RULE
·        CREATE TABLE
·        CREATE VIEW

表示性权限
表示性权限掌握那些只能由预定义系统角色的成员或数据库对象全部者履行的活动.比方,sysadmin 固定服务器角色成员自动担当在 SQL Server 安装中举行操作或查看的全部权限.
数据库对象全部者还有表示性权限,可以对所拥有的对象履行一切活动.比方,拥有表的用户可以查看、增添或删除数据,更改表定义,或掌握答应其他用户对表举行操作的权限.

db_owner                          在数据库中有全部权限.
db_Accessadmin                        可以增添或删除用户 ID.
db_securityadmin                可以管理全部权限、对象全部权、角色和角色成员资格.
db_ddladmin                        可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句.
db_backupoperator                可以发出 DBCC、CHECKPOINT 和 BACKUP 语句.
db_datareader                        可以挑选数据库内任何用户表中的全部数据.
db_datawriter                        可以更改数据库内任何用户表中的全部数据.
db_denydatareader                不能挑选数据库内任何用户表中的任何数据.
db_denydatawriter                不能更改数据库内任何用户表中的任何数据.

在这儿把新建的数据库角色的权限配置好,比方需求利用哪个表、视图、存储历程等.然后把Db_owner和db_securityadmin、db_backupoperator撤消,不给攻击者BACKUP DATABASE和CREATE TABLE的机会,一但攻击者具有这两个权限,那么你的网站就还处在非常危险的状况.还有注意一下,在成立数据库账号时,千万不能对服务器角色举行挑选.

上一页  [1] [2] [3] 下一页  

第四步是改正SQL SERVER内置存储历程.SQL SERVER预计是为了安装大概别的方面,它内置了一批危险的存储历程.能读到注册表信息,能写入注册表信息,能读磁盘同享信息等等……各位看到这儿,心里大概会在想,我的网站中有别的的代码,又不像查询解析器那样能查接将后果输出.给你这个权限,又不能怎么样,还是看不到信息.假如各位这样想就大错特错了.提醒一下,假如攻击者有CREATE TABLE的权限,那么成立一个暂时表,然后将信息INSERT到表中,然SELECT出来,接着跟数字举行对比,让SQL SERVER报错,那么后果就全出来了……所以我们要报着宁错杀,不放过的态度举行修补.

先来列出危险的内置存储历程:

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

以上各项全在我们封杀之列,比方xp_cmdshell屏蔽的办法为:sp_dropextendedproc 'xp_cmdshell',假如需求的话,再用sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'举行恢复.假如你不知道xp_cmdshell利用的是哪个.dll文件的话,可以利用sp_helpextendedproc xp_cmdshell来查看xp_cmdshell利用的是哪个动态联接库.别的,将xp_cmdshell屏蔽后,我们还需求做的步骤是将xpsql70.dll文件举行改名,以避免得到SA的攻击者将它举行恢复.

我们做到这儿,你的SQL SERVER就基本上安全了.但是信息还是能一样的外泄.毕竟SELECT我们是无法撤消的,除非你的网站用的是HTML.SQL INJECTION的防备还需求我们这些程序员来注意,这才是治本之法.我们在高级设置篇再接着对SQL SERVER的安全做下一步的解析.该篇文章假若有什么错漏,请大家多多包涵.谢谢……

上一页  [1] [2] [3]    以上是“针对SQL INJECTION的SQL SERVER安全设置初级篇[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 针对SQL INJECTION的SQL SERVER安全设置初级篇
  • 针对SQL Server表的只读权限分配
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .