手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

论文:Web安全对策研究

来源:互联网 作者:west263.com 时间:2008-02-21
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

4.1.2 SQL注入
SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序、数据库及服务器的信息,进而获取你想到得到的资料。

SQL注入的一般步骤是:首先,判断环境,寻找注入点,判断数据库类型。其次,根据注入参数类型,在脑海中重构SQL语句的原貌。接着,将查询条件替换成SQL语句,猜解表名。表名猜出来后,将Count(*)替换成Count(字段名),用同样的原理猜解字段名。最后,在表名和列名猜解成功后,再使用SQL语句,得出字段的值。

4.2 PHP程序
PHP最初是被称作Personal Home Page,后来随着PHP成为一种非常流行的脚本语言,名称也随之改变了,叫做Professional HyperText PreProcessor。以PHP4.2为例支持它的WEB服务器有:Apache, Microsoft Internet information Serve, Microsoft Personal web Server,AOLserver,Netscape Enterprise 等等。PHP的安全除了更新版本外,主要同其配置文件php.ini相关,设置需要注意如下问题:

4.2.1 关闭错误显示
php缺省是打开错误信息显示的,我们可以在php.ini中找到display_errors = On并把它设置为off从而关闭错误显示。关闭错误显示后,php函数执行错误的信息将不会再显示给用户,这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置,以及一些其它有用的信息,起码给攻击者的黑箱检测造成一定的障碍。这些错误信息可能对我们自己有用,可以让它写到指定文件中去,那么修改log_errors = Off 为log_errors = On 以及指定文件,找到下面这行: ;error_log = filename 去掉前面的;注释,把filename改为指定文件, error_log = /usr/local/apache/logs/php_error.log 这样所有的错误都会写到php_error.log文件里。

4.2.2 开启安全模式
php的safe_mode功能对很多函数进行了限制或禁用了,能在很大程度解决php的安全问题。在 Safe Mode部分找到: safe_mode = Off 改为: safe_mode = On 这样就打开了safe_mode功能。象一些能执行系统命令的函数shell_exec()和``被禁止,其它的一些执行函数如:exec(), system(), passthru(), popen()将被限制只能执行 safe_mode_exec_dir指定目录下的程序。如果你实在是要执行一些命令或程序,可以设置 safe_mode_exec_dir = /usr/local/php/exec 然后把要用的程序拷到/usr/local/php/exec目录下,这样,象上面的被限制的函数还能执行该目录里的程序。

4.3 ASP.NET和JSP 程序
ASP.Net 是Microsoft微软基于.NET Framework 的Web应用程序编程语言,能够建立强大的Web应用程序。ASP.Net不仅仅是ASP的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.Net的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。ASP.NET 安全性与 Microsoft Internet 信息服务 (IIS) 安全性协同工作,包括身份验证和授权服务以实现 ASP.Net 安全模型。ASP.Net还包括一个基于角色的安全功能,您可以为 Microsoft Windows 和非 Windows 用户帐户实现该功能。

JSP, Java Server Pages是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 在传统的网页HTML文件(*.htm, *.html)中加入Java程序片段 (Script let)和JSP标记(tag),就构成了JSP网页(*.jsp),Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。目前已经发现的JSP安全问题主要是源代码暴露和远程程序执行。源代码暴露主要指的是程序源代码会以明文的方式返回给访问者,添加特殊后缀、插入特殊字符串、文件不存在和路径权限问题都会造成源代码的暴露。远程程序执行类漏洞的特点就是可以通过URL 地址在浏览器中执行任意服务器上的命令和程序,从而引起安全问题。可以通过下载最新的补丁来解决这些问题。

5 数据安全
Web服务的数据主要包括数据库,静态页面和媒体数据。本文所述数据安全主要指常用数据库不被非法访问和静态页面和媒体数据不被非授权使用,下文将分节论述这两个问题。

5.1 常用数据库
5.1.1 ACCESS数据库
5.1.1.1 ACCESS数据库的存储隐患
在ASP+Access应用系统中,如果获得或者猜到Access数据库的存储路径和数据库名,则该数据库就可以被下载到本地。例如:对于网上书店的Access数据库,人们一般命名为book.mdb、store.mdb等,而存储的路径一般为“URL/database”或干脆放在根目录(“URL/”)下。这样,只要在浏览器地址栏中敲入地址:“URL/database/store.mdb”,就可以轻易地把store.mdb下载到本地的机器中。

5.1.1.2 ACCESS数据库的解密隐患
由于Access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&H42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以轻松地得到Access数据库的密码。基于这种原理,可以很容易地编制出解密程序。

5.1.1.3 防止ACCESS数据库被下载
在数据库新建一个表,表名为<%safe就可以了,这样IIS在解析的时候会出现500错误,数据库也就不会被下载了。

在你的数据库文件名后门加上# (不是扩展名,比如name#.mdb)这样IIS就以为你是在请求该目录中默认的文件名,比如index. asp,如果IIS找不到就会发出403禁止浏览目录的错误警告。

在IIS中是把数据库所在的目录设为不可读,这样就可以防止被下载,这样做也不会影响asp程序的正常使用。

直接使用数据源 (ODBC)这样数据库就可以不用在web目录里面,从而彻底防止被下载。

5.1.2 MSSQL数据库
5.1.2.1使用加密协议
SQL Server 使用的Tabular Data Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等等,这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西,包括数据库帐号和密码。所以,在条件容许情况下,最好使用SSL来加密协议,当然,你需要一个证书来支持。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!