ASP代码编写标准

标准

一、通用源代码格式规则
1.1开发工具

推荐使用Microsoft?公司的VisualInterDev来书写ASP代码,使用Macromedia?公司的Dreamweaver来书写HTML代码,也可以使用UltraEdit、ASPEdit2000等开发工具。

1.2缩进空格

缩进空格是指在每一级有两到四个空格。不要在源代码中保留TAB字符,这是因为TAB字符会随着不同用户的不同设置和不同的资源管理工具(打印、文档、版本控制等)而代表不同的宽度。

1.3数据合法性检查

所有表单提交页面中,表单上必须填写项目和填写项目中非法输入的判断都在页面中用javascript在客户端判断,如果必须和服务器端数据比较才能判断输入项目是否正确不在此例。
所有提交的信息(GET方式及POST方式)都必须在服务器端重新进行数据合法性校验,并过滤非法字符(&;`'\"|*?~<>^()[]{}$\n\r),例如,将"'"替换成"''"(两个单引号)号(替换字符串的工作将统一使用公共的CheckInputString(str)函数);而对于数字型变量,要检查输入的数据是否全为数字(javascript中使用isFinite或isNaN,VbScript中使用IsNumeric)。

1.4参数传递

建议使用POST方法,而不推荐使用GET方法;
严禁使用GET方法、SESSION或其它方式传递SQL语句;
禁止使用GET方式传递大量的查询字符串,特别是未经编码的汉字,HTTP协议传送表单域比查询字符串效率要高,而且带有一个大的查询字符串的页面在某些浏览器上会失效;
禁止使用SESSION、COOKIE传递非会话期间必要的参数。

1.5URL

包含头文件,页面的链接,提交的页面,用到的图片,如果引用的是如"include"、"image"等公共部分,必须使用绝对路径,即以虚根目录"/"开始的路径,以提高运行效率。例如:

6.4使用最简单的游标类型和记录锁定方式

在ADO中定义了四种不同的游标类型:
l动态游标(adOpenForwardOnly)-用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的Recordset中各种类型的移动。如果提供者支持,可使用书签。
l键集游标(adOpenKeyset)-其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许Recordset中各种类型的移动。
l静态游标(adOpenDynamic)-提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许Recordset中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端(ADOR)Recordset对象时唯一允许使用的游标类型。
l仅向前游标(adOpenStatic)-除仅允许在记录中向前滚动之外,其行为类似动态游标。这样,当需要在Recordset中单程移动时就可提高性能。

在打开Recordset之前设置CursorType属性来选择游标类型,或使用Open方法传递CursorType参数。部分提供者不支持所有游标类型。请检查提供者的文档。如果没有指定游标类型,ADO将默认打开仅向前游标。

在ADO中定义了四种不同的游标类型:
ladLockReadOnly-默认值,只读。无法更改数据。
ladLockPessimistic-保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。
ladLockOptimistic-开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用Update方法时锁定记录。
ladLockBatchOptimistic-开放式批更新。用于与立即更新模式相反的批更新模式。

打开Recordset前设置LockType属性可指定打开时提供者应该使用的锁定类型。读取该属性可返回在打开的Recordset对象上正在使用的锁定类型。Recordset关闭时LockType属性为读/写,打开时该属性为只读。

在实际使用过程中应该使用适合于处理任务的最简单的游标类型和记录锁定方式。例如:

仅打开一个静态的记录集并输出:
Rs.Opensql,Conn,0,1'adOpenForwardOnly,adLockReadOnly
打开的记录集中有text类型的字段:
Rs.Opensql,Conn,1,1'adOpenKeyset,adLockReadOnly

6.4SQL字符串过滤

所有的字符串输入框在向数据库提交查询、插入、删除或修改一条记录时必须用字符串过滤函数检查,即:
字符型:复写提交内容中的"'"、"''"等(使用公共函数的CheckInputString()。),并检查字符串的长度是否超长。
数值型:使用IsNumeric()判断输入是否为数字。
整型:使用Int(),Fix(),Round()截取其整数值。
日期型:使用isDate()函数判断是否为正确的日期输入。

6.5SQL事务执行

对数据库操作的事务一般应当使用SQL的存储过程执行。对于需要在ASP页面中执行的数据库操作,所有插入、删除、修改数据库不得使用RecordSet对象,必须使用Connect对象用SQL语句执行,RecordSet只在执行查询时使用。所有检索数据库的操作禁止使用"SELECT*FROM…",而要使用"SELECT字段一,字段二,字段三,…FROM…"。

6.6ADO对象的关闭

所有连接数据库页面中,Connect和Recordset等ADO对象必须在用完后立即关闭(Close),然后将其对象释放(Set***=nothing)。

七、Cookies
7.1Cookies的作用域

Cookies的Path属性规定了Cookies返回服务器的具体路径。为了使Cookies能够在整个网站的各个目录都可以起作用,应将Domain域属性设为:"/",
Cookies的Domain域属性限制了cookies可由浏览器送达之处。为了使cookies能够在整个网站的各子站点都可以起作用,应将Domain域属性设为:".yourDomain.com"。该值将作为常量cookie_Domain放入站点的公共文件中。即:

Response.Cookies("UserName").Path="/"
Response.Cookies("UserName").Domain=cookie_Domain

7.2Cookies的有效期

Cookies的Expires属性规定了Cookies的结束作用时间。如果要建立一个会话期间的cookies,即要在客户结束浏览后失效,则一定不能设置该属性。

7.3Cookies的安全

Cookies内部的敏感信息必须加密,该加密方式在公共密钥函数库中定义。

1.5URL
包含头文件,页面的链接,提交的页面,用到的图片,如果引用的是如“include”、“image”等公共部分,必须使用绝对路径,即以虚根目录“/”开始的路径,以提高运行效率。例如:
<AHREF="/index.asp">
<IMGSRC="/images/logo.gif”>

在一个相对独立的模块内部,可以使用相对路径,以提高可移植性。但是,禁止使用“..”返回上一级目录,即禁止使用类似“../images/logo.gif”的URL。相对路径如下书写:

时间: 2024-08-19 23:52:29

ASP代码编写标准的相关文章

编写安全的ASP代码

安全|安全 ASP中数据库的安全是一个很严肃的问题.很多代码的编写者意识到了这类问题,并且小心翼翼地对他们认为有问题的地方做了补救,但常见的情况是要么没有穷尽所有的可疑地点,要么这种补救逻辑上有误.对于一个耐心且嗅觉灵敏的攻击者来说,这种意义上的补救措施和没有任何补救措施没有本质上区别.    下面罗列的是一些可能出现的问题:有些是常见易犯的错误,有些根本就是逻辑上有问题.看看你是不是也这样写过?对于攻击者而言,倒着看这些东西,应该对寻找漏洞有点帮助,更为完整一点的检测方法,请等我的关于黑/白盒

在windows 2003 server中编写asp代码需要注意的地方

server|window 在windows 2003 server中编写asp代码,你可能会碰到下面的错误提示"不允许的父路径",涉及到的代码有: Server.MapPath(../)<!--#include file="../"--> 等.可能是出于安全考虑吧,微软屏蔽了脚本中对父路径的访问,但这可能会给我们的编程带来麻烦,尤其是原有asp的代码升级的时候.幸好,这个设置是可以关闭的,具体在下面这个地方IIS管理器中,在你的虚拟路径上点右键,属性,

Delphi编写组件封装asp代码的基本步骤

如果你想脱离asp爱好者的水平,那么你就应该学会为asp编写组件.我在google上搜索了一下,Delphi编写asp组件的文章一共就几篇,所以今天写了这篇Delphi编写asp组件的基础文章,希望对新手有点帮助.    开始吧,让我们一起编写一个"hello world!"的示例.我这里用的是Delphi 7.     1.文件->新建->其他->ActiveX->ActiveX Library,然后保存成showdll.dpr 2.再次,文件->新建-

选择ASP.NET代码编写策略

asp.net|策略 开发社区包括.NET Framework的内容,其中最有特色的是ASP.NET的Web开发.然而,这里也包含大量的有关legacy ASP代码及其开发人员的讨论. 很多ASP开发人员并非真正经过培训的开发者,他们往往只是HTML代码编写者,他们处理的ASP模型很不合理.这些开发人员通常只知道将他们的ASP常规思维应用到ASP.NET环境中,而这个过程他们却不知做出相应的选择. 以往的缺点我特别喜欢ASP.NET所具有的稳定性,尤其是当我在ASP开发过程处于迷惑不解的时候.我

编写asp代码截取字符串

  编写asp代码截取字符串: '函数名:SubstZFC '作 用:截字符串,汉字一个算两个字符,英文算一个字符 '参 数:str ----原字符串 ' strlen ----截取长度 '返回值:截取后的字符串 '适用:标题截取指定字符,如果用LEFT截取,当有英文时就会出现取出来的标题明显太短. '************************************************** Public Function SubstZFC(ByVal str, ByVal strle

生成EAN13标准的条形码的ASP代码实例_应用技巧

复制代码 代码如下: <title>条形码生成</title><%Rem =================================================================Rem = 函数:ean13Rem = 说明:生成EAN13标准的条形码,有实例(ASP代码)Rem = 版本:1.0.0Rem = 作者:第七种直角(7th/semico)Rem = Date:2005-08-08 11:57:06Rem = QQ:11110785Rem

生成EAN13标准的条形码的ASP代码实例

复制代码 代码如下:<title>条形码生成</title><%Rem =================================================================Rem = 函数:ean13Rem = 说明:生成EAN13标准的条形码,有实例(ASP代码)Rem = 版本:1.0.0Rem = 作者:第七种直角(7th/semico)Rem = Date:2005-08-08 11:57:06Rem = QQ:11110785Rem =

编写一个asp代码执行器

保存为runasp.asp运行.账号密码admin,登陆后输入代码就可执行了!! <% @ LANGUAGE="VBSCRIPT" %><%Option Explicitresponse.buffer=truedim Spassword,SUserName    SUserName="admin"    Spassword="admin"dim SQLMutiStrdim idim action    action=reques

用VB生成DLL封装ASP代码一个例子:连接access数据库等

access|封装|数据|数据库 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升.这个例子中被封装的dll文件可以隐藏access数据库的实际路径. VB生成的DLL封装ASP代码来连接数据库(Access). 本文用一个最简单的连接access数据库的例子来说明如何将asp代码封装为dll文件. 我们用vb,最常见的方式来封装asp代码. 我们需要封装的对象如下: 'Proconn.aspdim ProConnset ProConn=Server.CreateO