ASP脚本入门与防御思想

1.什么是ASP
ASP是Active Server Page的缩写,意为“动态服务器页面”,它可以与数据库和其他程序交互。
ASP网页的扩展名是.asp常用于各种动态网站中,网页中包括html标记、普通文本、脚本命令以及com组件等。

2.什么是IIS
IIS是一种web服务组件,其中包括HTTP、FTP、NNTP和SMTP等服务器,分别用于网页浏览、文件传输、新闻组件和邮件发送等方面。

【ASP简介】
ASP是Active Server Page的缩写,意为“活动服务器网页”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,常用于各种动态网站中。 ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。

与HTML相比,ASP网页具有以下特点
(1)利用ASP可以实现突破静态网页的一些功能限制,实现动态网页技术;
(2)ASP文件是包含在HTML代码所组成的文件中的,易于修改和测试;
(3)服务器上的ASP解释程序会在服务器端制定ASP程序,并将结果以HTML格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP所产生的网页;
(4)ASP提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。例如可以从web浏览器中获取用户通过HTML表单提交的信息,并在脚本中对这些信息进行处理,然后向web浏览器发送信息;
(5)ASP可以使用服务器端ActiveX组建来执行各种各样的任务,例如存取数据库、发送Email或访问文件系统等。
(6)由于服务器是将ASP程序执行的结果以HTML格式传回客户端浏览器,因此使用者不会看到ASP所编写的原始程序代码,可防止ASP程序代码被窃取。

【ASP的工作原理】
当在Web站点中融入ASP功能后,将发生以下事情:
1、用户向浏览器地址栏输入网址,默认页面的扩展名是.asp。
2、浏览器向服务器发出请求。
3、服务器引擎开始运行ASP程序。
4、ASP文件按照从上到下的顺序开始处理,执行脚本命令,执行HTML页面内容。
5、页面信息发送到浏览器。

【ASP的运行环境】
asp需要运行在PWS或IIS下。PWS或IIS服务在windows98或windows2000的光盘上附带着,可以通过“添加/删除程序”中的“添加/删除windows组件”来安装。
一般asp需要与access数据库或SQL Server数据库结合使用,编出功能强大的程序。

能够运行ASP的web服务器软件
IIS(internet information server)运行在windows2000环境
PWS(personal web server)运行在windows98环境

那么ASP 和 HTML 有何不同?
●当浏览器请求某个 HTML 文件时,服务器会返回这个文件
●当浏览器请求某个 ASP 文件时,IIS 将这个请求传递给 ASP 引擎。ASP 引擎会逐行地读取这个 ASP 文件,并执行文件中的脚本。最后,ASP 文件将以纯 HTML 的形式返回到浏览器。

【ASP能做什么】
●动态地编辑、改变或者添加网页的任何内容;
●对由用户从 HTML 表单提交的查询或者数据作出响应;
●访问数据或者数据库,并向浏览器返回结果;
●为不同的用户定制网页,提高这些页面的可用性;
●用 ASP 替代 CGI 和 Perl 的优势在于它的简易性和速度
●提供安全性保障—— ASP 代码不能从浏览器查看;
(浏览器是无法显示服务器端代码的,而CSS、HTML、JS之类的客户端代码是可以直接显示的。WEB服务器的作用就是将服务器端脚本,例如VBSCRIPT“翻译”成HTML,然后将HTML发回给客户端浏览器,这样才能正常显示ASP的运行结果。所以,通常没有IIS(如果我们使用的WEB服务器是IIS的话),ASP是无法查看的,因为缺了个“翻译”,IE读不懂服务器端的VBSCRIPT代码。)
●优秀的 ASP 编程可最小化网络流量;

【PHP与ASP有什么区别】
1、时间不同:
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。
由于Web程序开发十分复杂,以至于要制作一个简单的动态页面也需要编写大量的C代码才能完成。于是Microsoft公司于1996年推出一种Web应用开发技术ASP,用于取代对Web服务器进行可编程扩展的CGI标准

2、编写语言不同:
ASP用VBScript、JavaScript等简单容易的脚本语言。结合HTML代码,即可快速完成网站的应用程序,实现动态网页技术。
HP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。

3、创立的目的不同:
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。

4.ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序
ASP采用脚本语言VBScript(Java script)作为自己的开发语言。
PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法,并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。
JSP是Sun公司推出的新一代开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。

●优势和弱点:
ASP.NET 的优势很明显在于它简洁的设计和实施。这是面向对象的编程人员的梦想:语言灵活,并支持复杂的面向对象特性。在这种意义下,它真正能够与编程人员现有的技能进行互操作。
ASP.NET 的另一个优势是其开发环境。例如,开发人员可以使用 WebMatrix(一个社区支持的工具)、Visual Studio .NET 或各种 Borland 工具(如 Delphi 和 C++ Builder)。例如,Visual Studio 允许设置断点、跟踪代码段和查看调用堆栈。总而言之,它是一个复杂的调试环境。许多其他第三方的 ASP.NET IDE 解决方案也将必然出现。
但是ASP.NET强健性,是以损失效率为代价的。
ASP.NET 在内存使用和执行时间方面耗费非常大,这大部分归因于较长的代码路径。对基于 Web 的应用程序,这些局限可能是一个严重的问题,因为在 Web 上,您的应用程序可能扩展为每秒成千上万的用户。内存使用率还可能成为 Web 服务器上的一个问题。
这几个都提供在 HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP 、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML页面只依赖于Web服务器,而ASP 、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。

●性能比较:
有人做过试验,对这ASP、PHPP、JSP三种语言分别做回圈性能测试及存取Oracle数据库测试。在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而ASP、PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒和84秒。(参考PHPLIB)。 数据库测试中,三者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒,ASP则 需要 73 秒。

3.两种数据库Access和SQL Server
1.什么是数据库?
数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害和不必要的冗余,数据的存储独立于使用它的程序,对数据库插入新数据、修改和检索原有数据,均能按照一种公用的和可控制的方式进行。可以这么说:数据库就是数据的仓库。

2.Access数据库提供有表、查询、窗口、报表、页、宏、模块等7种用来建立数据库系统的对象,提供有多种向导、生成器、模板,能将数据存储、数据查询、界面设计、报表生成等操作规范化,未建立完善的数据库管理系统提供方便,也使普通用户不必编写代码,就可以完成大部分数据管理的任务。

3.SQl与Access数据库的区别是,Access数据库是个扩展名为.mdb的文件,大多应该和网站放在一起,而SQl则是通过网络来查询、更新数据,网站和数据库是可以分离的它所打开的默认端口是1433端口。

4.SQl全称为结构化查询语言,具有结构简洁、功能强大、简单易学等特点。
如今Visual Foxpro、PowerBuilder等常用的数据库开发系统,都支持SQl语言作为查询语言。实际上,脚本注入也就是SQL语句的注入,在研究ASP注入之前,我们来了解下SQl语言。

下面我们对网页中常见的各个部分进行说明,形如:

http://www.cmr.com.cn/economy/economynews/item.asp?id=813

在这个网址中:
●http:// 是协议名;
●www.cmr.com.cn 是域名;
●“economy” 这实际上是网站根目录上的一个文件夹,文件夹的名字就是economy;
●“economynews” 是文件夹economy里的子文件夹,名字是economynews;
●item.asp这个文件,它在文件夹economynews里;
●“?”之后就是传递给item.asp的变量了,这个变量的名字就是“id”,其值为“813” 如果有多个变量,将会用“&”符隔开。

当上页的网址确认后,ASP脚本会根据这个值到数据库查询相关内容返回给用户。
过程如下:
(1)用户向浏览器地址栏输入网址,默认页面的扩展名是.asp
(2)浏览器向服务器发出请求
(3)IIS服务器引擎开始运行ASP程序
(4)ASP文件按照从上到下的顺序开始处理,执行脚本命令和html页面内容,包括来连接到数据库用SQL语言查询数据。
(5)页面信息发送到浏览器。

4.ASP脚本防御思想
一直以来,asp给人的印象都是不太安全,实则不然。脚本语言和数据库本身并没有过错。
asp脚本的安全隐患在于管理员的不重视和对asp脚本的不了解,实际上只要使用得当,asp脚本其实可以很安全。

首先要谈到的就是注入,关于要如何过滤asp脚本注入,已经不是第一次提到了,但想要过滤非法字符这也不是意见简单的事。
防止了Get、post提交方式注入,还要记得过滤Cookie注入;
防止了数字型、字符型注入,还要记得防止搜索型注入;
防止了常规的非法字符,还要防范编码和大小写转换等情况。
还有表名、字段名的选取问题,很多情况下注入者大都不知道什么是表名和字段名的。可是很多程序员们都喜欢用admin、manage、user、pass、password、username等容易被猜到的表名和字段名,导致asp脚本变得极度不安全。
其实,只要在所有表名上加个简单的前缀(如aaa-admin),就可以有效的防止被人猜到。也不影响正常的使用。
另外,还要防止暴库,对密码进行MD5加密、修改默认数据库路径、常给网站程序打补丁、不用sa权限连接数据库、删除SQL server的存储扩展以及禁止非法IP连接1433端口,这些都是举手之劳,但是却可以极大提升asp网站的安全性!

一般来讲,防守比入侵容易,入侵一个网站的传统方法需要同时满足很多条件,管理只要破坏其中一个条件就能够保住网站,所以防御仅仅是对安全性的重视和耐心!

你可能感兴趣的:(ASP脚本入门与防御思想)