找回密码
 注册
查看: 1760|回复: 3

[转贴] SQL Server网站防注入终极解决方案

[复制链接]
发表于 2009-9-4 21:57:22 | 显示全部楼层 |阅读模式
【说明】这篇文章发表在2009年第16期《网管员世界》上,介绍了通过“分离”网站与使用不同权限SQL Server用户的方法,解决政府网站(以及类似网站)被注入、修改的问题。而更加详细的介绍,是在正在写作的一本《中小企业虚拟机解决方案大全》(暂命名)中的一个案例的一部分,敬请期待! 根据国家互联网应急中心的统计,截止2009年1月,有20%以上的政府网站被黑客入侵过。许多政府网站,由于开通网站的时间比较早,而当时对网站的安全性要求不高,这就导致了在早期开通网站的政府网站,其网站存在漏洞。这些漏洞可能包括以下这些:
弱口令:有些后台管理密码是默认的用户名及密码,例如都是admin。
操作系统漏洞:一些网站服务器操作系统没有及时更新补丁,存在漏洞。
Web服务器漏洞:一些网站采用低版本的IIS或Apache,存在漏洞。
数据库漏洞:所使用的数据库存在漏洞。
网站代码漏洞:由于网站开发的比较早,这些代码或多或少存在漏洞。
在上述这些漏洞中,弱口令、操作系统漏洞、Web服务器漏洞、数据库漏洞都很容易修复,例如,这些可能通过设置复杂密码、打补丁的方式修复,而网站代码漏洞以及由此引发的SQL Server网站注入漏洞,只能通过修改网站代码的方式来解决。而许多包括“后台管理”的一些网站,存在的一些“编辑器漏洞”更是不容易解决。
对于大多数的政府网站,其服务器都是放置在自己的信息中心机房,而网站的维护、后台管理都是由信息中心的人员在单位内部维护。而与此相似的许多大学、机关、事业单位、大型的公司来说,网站服务器也多是放在自己的机房,而维护也是由内部的人员,在局域网内部维护,网络拓扑如图1所示。

01.jpg

图1 网站放置在单位机房
如果将网站一分为二:将发布到互联网的网站设置成“只读”、用于网络内部维护的网站设置成“完全控制”,这样,就可以防止网站被黑客入侵。
网站防SQL Server注入思路:如果网站是基于SQL Server数据库的,在SQL Server中创建两个用户,一个用户对网站数据库只具有“浏览”权限、另一个用户对网站数据库具有“完全控制”权限。对于同一个网站来说,创建两个一样的备份,其中一个网站使用“浏览”权限的用户,该网站发布到Internet,对外提供服务;另一个网站,使用“完全控制”权限的SQL Server用户,该网站只对“内”服务。
关于网站的数据同步问题:由于在局域网内维护网站,例如一些网站新闻、通知的发布、一些表格、文件的上传等,如果这些数据是保存的SQL Server数据库中,则不需要对发布到Internet的网站进行修改;如果发布的一些表格、文件是保存在网站的文件夹中,例如,保存在网站的doc文件夹中,为了保证发布到Internet上的网站与内网网站数据的“同步”,可以在发布到Internet的网站文件夹中,删除名为doc的文件夹,然后在WEB服务器中,创建名为doc的虚拟目录,指向内网网站的doc文件夹即可。这样就达到了数据同步的目的。
下面通过一个具体的实例,介绍这个方法。
(1)将网站代码复制一份到其他文件夹,假设原网站在E:\zfwz-lan文件夹,复制后的在e:\zfwz-wan文件夹。
(2)在IIS中,创建两个站点,网站名称分别为zfwz-lan、zfwz-wan,分别指向第3分区的zfwz-lan与zfwz-wan,其中zfwz-wan主机头名为www.xx.gov.cn(政府网站域名)。zfwz-lan使用TCP的123端口(或者其他端口),zfwz-wan使用TCP的80端口。以后网站需要维护时,需要由局域网的用户,键入http://IP:123的方式进行维护。
(3)进入zfwz-lan的站点,进入管理网站(内部局域网用户后台管理的网站),进入“目录安全性”选项卡,只允许局域网内指定的IP地址(192.168.0.0/18)访问,如图2所示。

02.jpg

图2 只允许指定用户访问
(4)对发布到Internet的网站进行配置:进入保存该网站的文件夹,删除后台管理目录中,所有的子文件夹与文件,这样,发布到Internet的网站,不能进入后台管理页面。如果在网站管理维护中,有些图片、文件需要上传到后台管理目录中的某个文件夹,例如,在admin中有个upload目录保存后台上传的图片、新闻、文档等,则需要在“IIS”中,进入“zfwz-wan”中的admin目录中,创建同名的虚拟目录,指向内网网站中的同名目录(即e:\zfwz-lan\admin\upload),这样,即不影响发布到外网网站的数据显示,又避免了黑客通过后台管理网站中的一些漏洞入侵网站。在创建虚拟目录时,“执行权限”设置为“无”。如图3所示。

03.jpg

图3 创建虚拟目录
如果有多个虚拟目录,则需要一一创建。另外,在该文件夹中,删除后台管理的网页,例如后台管理的login.asp等代码。
(5)在SQL Server中创建一个用户,用户名为sqlread,允许该用户对网站数据库具有SELECT和CONNECT权限,如图4所示。

04.jpg

图4 在SQL Server中创建用户,允许对网站数据库“只读”
(6)打开“资源管理器”,打开发布到外网网站的文件夹(本示例为e:\zfwz-wan),编辑访问数据库用户名、密码的配置文件,在本例中,该文件名为conn.asa,用“记事本”打开该文件,替换里面的用户名为sqlread,并键入该密码,如图5所示。

05.jpg

图5 修改访问数据库的帐户
经过上述修改,发布到Internet上的网站,即使网站代码存在漏洞,即使黑客根据网站代码漏洞,精心创建了SQL Server语句,但由于现在发布的网站只能对数据库有“读取”权限,而不能达到破坏数据库的目的。

本文出自 “王春海的博客” 博客,转载请与作者联系!
发表于 2009-9-5 08:21:28 | 显示全部楼层
看看。
发表于 2009-9-5 10:45:02 | 显示全部楼层
帮你顶一下。
发表于 2009-9-5 14:18:12 | 显示全部楼层
不懂哟,学习啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

本站无意传播任何侵权软件与信息,部分资源为网友搜集或发布,仅供学习和研究使用,请支持正版。站内所发布的资源,如有侵犯你的权益,请联系我们,本站将立即改正或删除。

QQ|Archiver|手机版|小黑屋|联系我们|中华设计论坛 ( 苏ICP备20023187号-1

GMT+8, 2024-11-23 12:13

Powered by Discuz! X3.5

© 2006-2024 Daliang Team.

快速回复 返回顶部 返回列表