程式員易犯的20條錯誤

來源:互聯網
上載者:User
程式員易犯的20條錯誤
 

1.不要將沒有過濾的使用者輸入發送給用戶端.
如:Response.Write "You have entered " & Request("UserInput")
2.不要信任用戶端和SESSION變數.
3.不要忘記指定字元集.
<META http-equiv="Content-Type" content="text/html; charset=GB2312">
4.不要在沒處理檔案路徑的情況下讓使用者訪問檔案.
如:這樣的運算式是不正常的.
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%2e/global.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")

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.