從asp程式編寫到伺服器配置
asp全稱active server pages,是微軟推出的用來取代cgi(common gateway inte***ce)的動態伺服器網頁技術。由於asp比較簡單易學,又有微軟這個強大後台的支援,所以應用比較廣泛,相對來說發現的缺陷和針對各程式的漏洞也比較多。asp可執行的伺服器端平台包括:winnt、win2k、winxp和win2003,在win98環境下裝上pws4.0也可以執行。現在我們就針對win2k和win2003這兩個系統來談談asp的安全配置。
asp程式安全篇:
在做安全配置前,我們先了解一下入侵者的攻擊手法。現在很流行注入攻擊,所謂注入攻擊,就是利用提交特殊位址將asp中引用的正常sql語句和入侵者所需要的sql語句一併執行,使入侵者達到入侵的目的。現在更是有一些指令碼注入工具發布,使菜鳥也可以輕鬆完成對asp的注入攻擊。那麼我們先來了解一下這些工具是怎樣注入的。
[url]一般會以提交兩個位址來測試,如:
[url] and 1=1
[url] and 1=2
那麼,知道可以注入**侵者可以做什麼呢?
[url] and exists (select * from 表名 where 列名=資料)
根據返回的正確或錯誤頁面來判斷猜的表名和列名是否正確,具體實現時是先猜表名再猜列名。當猜出表名和列名之後還可以用asc和mid函式來猜出各列的資料。mid函式的格式為:mid(變數名,第幾個字元開始讀取,讀取幾個字元),比如:mid(pwd,1,2)就可以從變數pwd中的第一位開始讀取兩位的字元。asc函式的格式為:asc("字串"),如:asc("a")就可以讀出字母a的ascii碼了。那麼實際應用的時候就可以寫為:asc(mid(pwd,1,1))這樣讀取的就是pwd列的第乙個字元的ascii碼,提交: asc(mid(pwd,1,1))>97以返回的頁面是否為正確頁面來判斷pwd列的第乙個字元的ascii碼是否大於97(a的ascii碼),如果正確就再試是否小於122(z的ascii碼)……這樣慢慢縮小字元的ascii碼的範圍,猜到真實的ascii碼也只是時間的問題。一位一位的猜就可以得到資料庫中的使用者名稱和密碼了。還有一種asp驗證缺陷——就是使用者名稱和密碼都輸'or '1'='1,構造sql語句select * form 表單名 where username='' or '1'='1' and pwd='' or '1'='1'就可以達到繞過密碼驗證的目的。
說了那麼多,其實防範的方法很簡單,我們把特殊字元(如and、or、'、")都禁止提交就可以防止注入了。asp傳輸資料分為get和post兩種, get是通過將資料新增到url後提交的方式,post則是利用郵寄資訊資料字段將資料傳送到伺服器。
那麼,我們先來看看如何將get方式提交資料中的特殊字元過濾。首先要知道,iis是以字串的形式將get請求傳給asp.dll的,在將資料傳遞給request.querystring之後,asp解析器會解析出request.querystring的資訊,然後跟據"&"來分出各個陣列內的資料。現在我們要讓get方式不能提交以下字元:
'、and、exec、insert、select、delete、update、count、*、%、chr、mid、master、truncate、char、declare
那麼,防止get方式注入的**就如下:
<%
dim sql_leach,sql_leach_0,sql_data
sql_leach = "',and,exec,insert,select,delete,update,count,*,%,chr,mid,master,truncate,char,declare"
sql_leach_0 = split(sql_leach,",")
if request.querystring<>"" then
for each sql_get in request.querystring
for sql_data=0 to ubound(sql_leach_0)
if instr(request.querystring(sql_get),sql_leach_0(sql_data))>0 then
response.write "請不要嘗試進行sql注入!"
response.end
end if
next
next
end if
%>
其中,變數sql_leach中的字串就是指定過濾的字元,以","隔開。
接著過濾post提交方式的注入,我們可以看到,request.form也是以陣列形式存在的,只要對它再進行一次迴圈判斷就可以了。防止以post方式注入的asp**如下:
<%
if request.form<>"" then
for each sql_post in request.form
for sql_data=0 to ubound(sql_leach_0)
if instr(request.form(sql_post),sql_leach_0(sql_data))>0 then
response.write "請不要嘗試進行sql注入!"
response.end
end if
next
next
end if
%>
這樣,get和post注入都被禁止了。
還有幾點要注意的:
1.資料庫命名長些並盡量放在**根目錄下,資料庫的表名和欄位名盡量不合常規;2.儲存敏感資訊(如使用者和密碼)的資料庫盡量和在前台頁面引用的資料庫分開(如果用新的暴庫方法由前台頁面暴出了資料庫,那麼入侵者也得不到有價值的資訊);3.後台的目錄名和登陸頁面的名字要改的不尋常些,千萬不可出現admin或者login之類的字元,以免被注入軟體掃瞄到後台。4.如果前台或後台有上傳檔案的功能,切記不能有任何其他功能直接的或間接的擁有更改檔名的許可權。這樣的多重保障就更加安全些了。
asp伺服器安全配置篇(針對win2k和win2003):
我們從裸機說起——
首先,拔掉網線,按需求分割槽之後將所有盤格式化為ntfs,在d盤安裝系統。系統裝完之後立刻做乙個裸系統的ghost備份,以防後面配置的過程**意外。
先把驅動都裝上是必要的。之後先裝防火牆,選擇一款好的防火牆是很重要的。能買硬體防火牆最好,推薦的選擇:cisco pix系列、天融信 ngfw系列、冰之眼(入侵檢測系統)。沒有硬體防火牆的情況下,使用軟體防火牆,推薦:blackice(我個人的最愛)、checkpoint(以色列國家級防火牆)、zonealarm(不太熟悉,但口碑不錯),雖然比較喜歡天網防火牆,但是不推薦伺服器用天網。
裝完防火牆裝防毒軟體,推薦:kv江民防毒軟體(好東西)、諾頓(雖然好,但比較霸道)、卡巴斯基(聽說比較耗記憶體,但對病毒療效狂好)。
開始安裝各種需要的軟體,如果是2003系統,別忘了裝iis。以上所有軟體都裝在乙個非系統盤的指定盤裡。
下面開始給系統打補丁,首先用手頭有的光碟給2k打上sp4或給2003打上sp1。在本地操作的情況下將能打系統和軟體的補丁都打上。之後,在確認防火牆和防毒軟體都設定好的情況下插上網線,開始window update,並公升級防毒軟體至最新病毒庫。打完所有的系統和軟體的補丁之後,將網線拔掉,把所有臨時檔案和系統補丁留下的解除安裝檔案全部刪除,如果覺得占用空間太多還可以把%systemroot%\system32\dllcache\下的所有檔案刪除(系統備份檔案),這將使最後的ghost備份檔案體積比較小。然後再次用ghost備份系統。
regsvr32/u d:\winnt\system32\wshom.ocx
del d:\winnt\system32\wshom.ocx
重新啟動,就ok了。另外入侵者可以利用getobject("winnt")獲得使用者和程序的列表,可以將workstation服務禁用作為防範措施。
設定許可權是必要的。首先,確定iis裡要建立幾個站點,之後為每個站點建立乙個使用者。在iis站點的目錄安全性裡選擇讓這個使用者作為匿名訪問的帳戶。再設定所有分割槽都禁止這個使用者訪問,而在站點對應的資料夾設定允許此使用者訪問。這樣即使站點被入侵,入侵者也拿不到伺服器的shell。
一切做好之後用ghost再次備份,並將做好的備份檔案放在與伺服器不在同一區域網的機器上或相對安全的地方。插上網線,伺服器就可以安全的正常工作了。之後可以在每次伺服器重起時還原一次系統,這都是後話了。
上海酒吧不完全手冊
酒吧 加利福尼亞california club 皋蘭路2號 park97 party,人均50 100元左右 酒吧 蝙蝠酒吧b.a.t.s.富城路33號香格里拉酒店地下室 大倉庫,人氣旺,50 100元 酒吧 505啤酒吧 南京東路505號 德國鄉村風味,人均100 200元 63515888 酒吧...
IT職位簡歷寫作不完全手冊
03年是我國高校擴招生畢業的第一年,大量本科生湧向了it市場 it就業崗位增加幅度落後於市場人才供給,給人力資源市場造成了一定壓力。為此,業內專家指出,it新人入行需要打好基本功,應聘企業應從小事做起,首先學會寫乙份好簡歷,提高求職應聘的成功率。作程式設計師是許多計算機專業的學生的必由之路。而it就...
酒吧流行遊戲不完全手冊
酒吧流行遊戲不完全手冊 酒令類 1.蜜蜂口令 兩隻小蜜蜂呀,飛到花叢中呀,嘿!石頭,剪刀 布,然後猜贏的一方就做打人耳光狀,左一下,右一下,同時口中發出 啪 啪 兩聲,輸方則要順手勢搖頭,作被打狀,口喊 啊 啊 如果猜和了,就要做出親嘴狀還要發出兩聲配音。動作及聲音出錯則飲!注 適合兩個人玩,有點打...