网站建设中的安全防范(网络722孙自鸣学号2007238023)摘要:对目前日益严峻的网站安全问题进行分析,提出了网站安全防范措施,通过基于UNIX和Windows等常用平台,介绍WEB网站的防护经验及网站中数据库具体防范。关键词:网站;安全;防护;数据库;安全;ODBC数据源1网站技术简介安全威胁的来源1.1称为万维网,简称Web。分成服务器端、客户接收机及通讯协议三个部分。1.1.1服务器(Web服务器)服务器结构中规定了服务器的传输设定、信息传输格式及服务器本身的基本开放结构。Web服务器的作用就是管理这些文档,按用户的要求返回信息。1.1.2客户接收机(Web浏览器)客户机系统称为Web浏览器,用于向服务器发送资源索取请求,并将接收到的信息进行解码和显示。Web浏览器是客户端软件,它从Web服务器上下载和获取文件,翻译下载文件中的HTML代码,进行格式化,根据HTML中的内容在屏幕上显示信息。1.1.3通讯协议(HTTP协议)Web浏览器与服务器之间遵循HTTP协议进行通讯传输。HTTP(HyperTextTransferProtocol,超文本传输协议)是分布式的Web应用的核心技术协议,在TCP/IP协议栈中属于应用层。它定义了Web浏览器向Web服务器发送索取Web页面请求的格式,以及Web页面在Internet上的传输方式。1.2服务器安全威胁对于Web服务器、服务器的操作系统、数据库服务器都有可能存在漏洞,恶意用户都有可能利用这些漏洞去获得重要信息。Web服务器上的漏洞可以从以下几方面考虑:Web服务器操作系统本身存在一些漏洞,能被黑客利用侵入到系统,破坏一些重要文件,甚至造成系统瘫痪。Web数据库中安全配置不完整,存在弱口令或被数据库注入等安全漏洞,导致数据丢失或服务中断。Web服务器上的数据存储结构不合理,没有划分安全区域或重要数据没有存放在安全区域,导致被侵入。Web服务器上运行的程序存在安全漏洞,或应用程序所需要的权限过高没有优化,容易被黑客侵入。1.3客户端安全威胁现在网页中的活动内容已被广泛应用,活动内容的不安全性是造成客户端的主要威胁。主要用到JavaApplet、ActiveX、Cookie等技术都存在不同的安全隐患。1.4数据传输中的安全威胁Internet是连接Web客户机和服务器通信的信道,是不安全的。未经授权的用户可以改变信道中的信息流传输内容,造成对信息完整性的安全威胁。此外,还有像利用拒绝服务攻击,向网站服务器发送大量请求造成主机无法及时响应而瘫痪,或者发送大量的IP数据包来阻塞通信信道,使网络的速度便缓慢。1.5网站数据库的安全、(一)Access数据库的安全问题1.Access数据库的存储隐患在ASP+Access应用系统中,如果获得或者猜测到Access数据库的存储路径和数据库名,则该数据库就可以被下载到本地。2.Access数据库的解密隐患由于Access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&H42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以轻松地得到Access数据库的密码。基于这种原理,很容易编制出解密程序或者在互联网上下载到破解工具,数据库文件的内容,企业的资料、隐私和员工的密码从此不在安全。由此可见,无论是否设置了数据库密码,只要数据库被下载,其信息就没有任何安全性可言了。(二)ASP带来的安全问题1.ASP程序源代码的隐患由于ASP程序采用的是非编译性语言,这大大降低了程序源代码的安全性。任何人只要进入站点,就可以获得源代码,从而造成ASP应用程序源代码的泄露。2.程序设计中的安全隐患ASP代码利用表单(form)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。例如在浏览器中敲入“page.asp?x=1”,即可不经过表单页面直接进入满足“x=1”条件的页面。因此,在设计验证或注册页面时,必须采取特殊措施来避免此类问题的发生。2WEB安全保护的原则2.1实用的原则针对网站架构,网站安全问题主要分为以下四个方面:服务器安全、边界安全、Internet和Extranet上的安全,在攻击行为发生前,做到防患于未然是预防措施的关键。2.2积极预防的原则对WEB系统进行安全评估,权衡考虑各类安全资源的价值和对它们实施保护所需要的费用,通过评估,确定不安全情况发生的几率,采用必要的软硬件产品,加强网站日常安全监控。2.3及时补救的原则在攻击事件发生后尽快恢复系统的正常运行,并找出发生攻击事件问题的原因,将损失降至最低,并研究攻击发生后应对措施。3建立安全的Web网站3.1合理配置主机系统3.1.1仅提供必要的服务默认安装的操作系统都有一系列常用的服务。例如UNIX系统将提供Finger、Sendmail、FTP、NFS、IP转发等,WindowsNT系统将提供RPC、IP)转发、FTP、SMTP等。而且,系统在缺省的情况下自动启用这些服务,或提供简单易用的配置向导。为此,在安装操作系统时,应该只选择安装必要的协议和服务;对于UNIX系统,应检查/etc/rc.d/目录下的各个目录中的文件,删除不必要的文件;对于Windows系统,应删除没有用到的网络协议,不要安装不必要的应用软件。一般情况下,应关闭Web服务器的IP转发功能。对于专门提供Web信息服务(含提供虚拟服务器)的网站,最好由专门的主机(或主机群)作Web服务器系统,对外只提供Web服务,没有其他任务。这样,可以保证(1)使系统最好地为Web服务提供支持;(2)管理人员单一,避免发生管理员之间的合作不调而出现安全漏洞的现象;(3)用户访问单一,便于控制;(4)日志文件较少,减轻系统负担。对于必须提供其他服务,则必须仔细设置目录、文件的访问权限,确保远程用户无法通过Web服务获得操作权限3.1.2使用必要的辅助工具,简化安全管理启用系统的日志(系统帐户日志和Web服务器日志)记录功能。监视并记录访问企图是主机安全的一个重要机制,以利于提高主机的一致性以及其数据保密性。3.2合理配置Web服务器在UnixOS中,以非特权用户而不是Root身份运行Web服务器。(1)设置Web服务器访问控制。通过IP地址控制、子网域名来控制,未被允许的IP地址、IP子网域发来的请求将被拒绝;(2)通过用户名和口令限制。只有当远程用户输入正确的用户名和口令的时候,访问才能被正确响应。(3)用公用密钥加密方法。对文件的访问请求和文件本身都将加密,以便只有预计的用户才能读取文件内容。3.3设置Web服务器有关目录的权限为了安全起见,管理员应对”文档根目录“和“服务器根目录”做严格的访问权限控制。服务器根目录下存放日志文件、配置文件等敏感信息,它们对系统的安全至关重要,不能让用户随意读取或删改。服务器根目录下存放CGI脚本程序,用户对这些程序有执行权限,恶意用户有可能利用其中的漏洞进行越权操作。服务器根目录下的某些文件需要由Root来写或者执行,如Web服务器需要Root来启动,如果其他用户对Web服务器的执行程序有写权限,则该用户可以用其他代码替换掉Web服务器的执行程序,当Root再次执行这个程序时,用户设定的代码将以Root身份运行。3.4安全管理Web服务器Web服务器的日常管理、维护工作包括Web服务器的内容更新,日志文件的审计,安装一些新的工具、软件,更改服务器配置,对Web进行安全检查等。4.数据库的防范对策我们可以采用迷惑法、隐藏法、加密法、ODBC数据源法和注册验证法等技术手段防止数据库文件被非法下载。(一)非常规命名法1.把数据库的主文件名进行修改,并且放到很深的目录下面防止数据库被找到的简便方法是为Access数据库文件起一个复杂的非常规名字,并把它存放在多层目录下。例如,对于网上花店的数据库文件,不要简单地命名为“flower.mdb”或“bloom.mdb”,而是要起个非常规的名字,例如:halower123.mdb,再把它放在如/wh123/wd123d/hoo9/dh123/abc之类的深层目录下。这样攻击者想简单地猜测数据库的位置就很困难了。2.把mdb扩展名修改为ASP或ASA等不影响数据查询的名字但是有时候修改为ASP或者ASA以后仍然可以被下载,如将mdb修改为ASP以后,直接在IE的地址栏里输入网络地址,虽然没有提示下载但是却在浏览器里出现了一大片乱码。如果使用FlashGet等专业的下载工具就可以直接把数据库文件下载下来,因此需要找到一种FlashGet无法下载的方法。根据网站在处理包含unicode码的链接的时候将会不予处理的原理。可以利用unicode编码(比如可以利用“%3C”代替“”等),来达到目的。而FlashGet在处理包含unicode码的链接的时候却“自作聪明”地把unicode编码做了对应的处理,比如自动把“%29”的unicode编码字符转化成“(”。即是说如向FlashGet提交一个的下载链接,它却解释成了(amitx.mdb,当单击“确定”按钮进行下载的时候,FlashGet就去寻找一个名为“(amitx.mdb”的文件,当然找不到。(二)使用ODBC数据源在ASP程序设计中,应尽量使用ODBC数据源,不要把数据库名直接写在程序中。例如:直接语句DBPath=ServerMapPath(“/wh123/wd123d/hoo9/dh123/abc/halower123.mdb”)ODBC数据源语句ConnOpen“driver={MicrosoftAccessDriver(*.mdb)};dbq=”&DBPath可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,数据库也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了。(三)加密ASP页面可以使用微软公司的免费软件ScriptEncoder对ASP页面进行加密。它可以对当前目录中的所有的ASP文件进行加密,并把加密后的文件统一输出到相应的目录中。由于ScriptEncoder只加密在HTML页面中嵌入的ASP代码,其他部分仍保持不变,这就使得我们仍然可以使用FrontPage等常用网页编辑工具对HTML部分进行修改、完善,操作起来简单方便、效果良好。(四)利用Session对象进行注册验证为防止未经注册的用户绕过注册界面直接进入应用系统,可以采用Session对象进行注册验证。Session对象最大的优点是可以把某用户的信息保留下来,让后续的网页读取。一般情况,在设计网站时都要求用户注册成功后才可登录。但如果不采用Session对象进行注册验证,则用户在浏览器中敲入“URL/hrmis.asp?page=1”即可绕过注册界面,直接进入系统。利用Session对象可以有效阻止这一情况的发生。相关的程序代码如下:%‘读取用户输入的账号和密码UserID=Request(“UserID”)Password=Request(“Password”)‘检查UserID及Password是否正确(实际程序可能会比较复杂)IfUserID“hrmis”OrPassword“password”ThenResponse.Write“账号错误!”Response.EndEndIf'将Session对象设置为通过验证状态Session(“Passed”)=True%进入应用程序后,首先进行验证:%'如果未通过验证,返回Login状态IfNotSession(“Passed”)ThenResponse.Redirect“login.htm”End