分享
 
 
 

程序员易犯的20条错误

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

程序员易犯的20条错误

[/url]

1.不要将没有过滤的用户输入发送给客户端.

如:Response.Write "You have entered " & Request("UserInput")

2.不要信任客户端和SESSION变量.

3.不要忘记指定字符集.

<META http-equiv="Content-Type" content="text/html; charset=GB2312">

4.不要在没处理文件路径的情况下让用户访问文件.

如:这样的表达式是不正常的.

[url=http://www.example.net/article.asp?file=new.htm]http://www.example.net/article.asp?file=new.htm

这将导致以下情况的发生:

http://www.example.net/article.asp?file=/global.asa

http://www.example.net/article.asp?file=/../../../boot.ini

http://www.example.net/article.asp?file=LPT1

http://www.example.net/article.asp?file=%2e%2eglobal.asa

可用以下方法来正确处理该情况:

<%

Set fso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

Set f = fso.GetFile(request("file"))

If err then

Response.Write "Error"

Else

Response.Write f.Path

End If

%>

5.在没有过滤用户输入的情况下,不要进行SQL查询.

6.如果你的数据库内容来自用户的输入,不要相信它.

7.不要将密码或者其它敏感的数据保存在ASP页面中.

8.不要依赖弱安全检查的内容.

如:HTTP重定向,HTML中的TEXT字段的最大长度限制等等.

9.不要将注释留在HTML页面中,特别是一些敏感信息.

10.不要给出太多不必要的信息给客户端.

如在一个登录页面,登录失败的信息就不能太多,如果将:密码是四位,用户不存在等过多的信息给客户端,将会给那些不怀好意的家伙有机可乘!

11.不要在当前路径下写文件,数据库操作.要将文件,数据库文件单独放在一个分区或在WEB根目录这外的目录下.

12.不要在URL中带敏感信息.

13.不要使用INC文件.

因为IIS默认情况下是不处理INC文件的,最好用.INC.ASP扩展名.

14.不要在没有验证用户输入的情况下发送邮件.

15.不要在FORM的HIDDEN字段中保存敏感数据.

16.不要让IIS来处理错误,因为会发送太多的信息给客户端.

最好将IIS的脚本调试改为只发送文本信息.

17.好好的控制你的代码.

将那些不用的,临时的代码都删除,如.test.asp,index.asp.bak

18.在没有测试的情况下不要发布你的代码.

19.不要将不必要的敏感数据存在数据库中,这样万一你的数据库被攻破,也不要造成更大的损失.

20.不要以为这样就够了,还有更多的情况要在实际中被考虑到.

二、Adodb.Stream 的使用说明

组件:"Adodb.Stream"

有下列方法:

Cancel 方法

使用方法如下

Object.Cancel

说明:取消执行挂起的异步 Execute 或 Open 方法的调用。

Close 方法

使用方法如下

Object.Close

:关闭对像

CopyTo 方法

使用方法如下

Object.CopyTo(destStream,[CharNumber])

说明:将对像的数据复制,destStream指向要复制的对像,CharNumber为可选参数,指要复制的字节数,不选为全部复制。

Flush 方法

使用方法如下

Object.Flush

说明:

LoadFromFile 方法

使用方法如下

Object.LoadFromFile(FileName)

说明:将FileName指定的文件装入对像中,参数FileName为指定的用户名。

Open 方法

使用方法如下

Object.Open(Source,[Mode],[Options],[UserName],[Password])

说明:打开对像,

参数说明:Sourece 对像源,可不指定

Mode 指定打开模式,可不指定,可选参数如下:

adModeRead =1

adModeReadWrite =3

adModeRecursive =4194304

adModeShareDenyNone =16

adModeShareDenyRead =4

adModeShareDenyWrite =8

adModeShareExclusive =12

adModeUnknown =0

adModeWrite =2

Options 指定打开的选项,可不指定,可选参数如下:

adOpenStreamAsync =1

adOpenStreamFromRecord =4

adOpenStreamUnspecified=-1

UserName 指定用户名,可不指定。

Password 指定用户名的密码

Read 方法

使用方法如下:

Object.Read(Numbytes)

说明:读取指定长度的二进制内容。

参数说明:Numbytes指定的要读取的找度,不指定则读取全部。

ReadText 方法

使用方法如下:

Object.ReadText(NumChars)

说明:读取指定长度的文本

参数说明:NumChars指定的要读取的找度,不指定则读取全部。

SaveToFile 方法

使用方法如下:

Object.SaveToFile(FileName,[Options])

说明:将对像的内容写到FileName指定的文件中

参数说明:FileName指定的文件

Options 存取的选项,可不指定,可选参数如下:

adSaveCreateNotExist =1

adSaveCreateOverWrite =2

SetEOS 方法

使用方法如下:

Object.setEOS()

说明:

SkipLine 方法

使用方法如下:

Object.SkipLine()

说明:

Write 方法

使用方法如下:

Object.Write(Buffer)

说明:将指定的数据装入对像中。

参数说明:Buffer 为指定的要写入的内容。

WriteText 方法

使用方法如下:

Object.Write(Data,[Options])

说明:将指定的文本数据装入对像中。

参数说明:Data 为指定的要写入的内容。

Options 写入的选项,可不指定,可选参数如下:

adWriteChar =0

adWriteLine =1

有下列属性:

Charset

EOS 返回对像内数据是否为空。

LineSeparator 指定换行格式,可选参数有

adCR =13

adCRLF =-1

adLF =10

Mode 指定或返加模式。

Position 指定或返加对像内数据的当前指针。

Size 返回对像内数据的大小。

State 返加对像状态是否打开。

Type 指定或返回的数据类型,可选参数为:

adTypeBinary =1

adTypeText =2

三、根据需要动态include不同的文件(需要FSO支持)

受<! #include file="filename.asp" --> 宏限制

必须存在该文件并且会预先编译(不管前面是否加以条件)

经常有这样的要求,根据不同的需求要求include不同的文件

如各个人的不同设置,所以要求能动态include文件。

代码如下:

Function include(filename)

Dim re,content,fso,f,aspStart,aspEnd

set fso=CreateObject("Scripting.FileSystemObject")

set f=fso.OpenTextFile(server.mappath(filename))

content=f.ReadAll

f.close

set f=nothing

set fso=nothing

set re=new RegExp

re.pattern="^\s*="

aspEnd=1

aspStart=inStr(aspEnd,content,"<%")+2

do while aspStart>aspEnd+1

Response.write Mid(content,aspEnd,aspStart-aspEnd-2)

aspEnd=inStr(aspStart,content,"%\>")+2

Execute(re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write "))

aspStart=inStr(aspEnd,content,"<%")+2

loop

Response.write Mid(content,aspEnd)

set re=nothing

End Function

使用范例:

include("youinc.asp")

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有