在線客服
24小時(shí)免費(fèi)咨詢電話:18978941786
客服時(shí)間:上午9:30~下午6點(diǎn)
ASP網(wǎng)站漏洞的防范八大法則
收藏 分享 發(fā)布日期:2012-2-12 16:30:45 編輯:admin 文章來源:安全中國網(wǎng) 點(diǎn)擊率:
SQL Injection這樣的漏洞,由于ASP本身存在一些安全漏洞,稍不小心就會(huì)給黑客提供可乘之機(jī)。事實(shí)上,安全不僅是網(wǎng)管的事,編程人員也必須在某些安全細(xì)節(jié)上注意
(1)為你的數(shù)據(jù)庫文件名稱起個(gè)復(fù)雜的非常規(guī)的名字,并把它放在幾層目錄下。所謂 “非常規(guī)”, 打個(gè)比方說,比如有個(gè)數(shù)據(jù)庫要保存的是有關(guān)書籍的信息, 可不要給它起個(gè)“book.mdb”的名字,而要起個(gè)怪怪的名稱,比如d34ksfslf.mdb, 并把它放在如./kdslf/i44/studi/的幾層目錄下,這樣黑客要想通過猜的方式得到你的Access數(shù)據(jù)庫文件就難上加難了。
(2)不要把數(shù)據(jù)庫名寫在程序中。有些人喜歡把DSN寫在程序中,比如: DBPath = Server.MapPath(“cmddb.mdb”)
conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath
假如萬一給人拿到了源程序,你的Access數(shù)據(jù)庫的名字就一覽無余了。因此建議你在ODBC里設(shè)置數(shù)據(jù)源,再在程序中這樣寫:
conn.open“shujiyuan”
(3)使用Access來為數(shù)據(jù)庫文件編碼及加密。首先在“工具→安全→加密/解密數(shù)據(jù)庫”中選取數(shù)據(jù)庫(如:employer.mdb),然后按確定,接著會(huì)出現(xiàn)“數(shù)據(jù)庫加密后另存為”的窗口,可存為:“employer1.mdb”。
要注意的是,以上的動(dòng)作并不是對(duì)數(shù)據(jù)庫設(shè)置密碼,而只是對(duì)數(shù)據(jù)庫文件加以編碼,目的是為了防止他人使用別的工具來查看數(shù)據(jù)庫文件的內(nèi)容。
接下來我們?yōu)閿?shù)據(jù)庫加密,首先打開經(jīng)過編碼了的 employer1.mdb,在打開時(shí),選擇“獨(dú)占”方式。然后選取功能表的“工具→安全→設(shè)置數(shù)據(jù)庫密碼”,接著輸入密碼即可。這樣即使他人得到了employer1.mdb文件,沒有密碼他也是無法看到 employer1.mdb中的內(nèi)容。
7、防范遠(yuǎn)程注入攻擊
這類攻擊在以前應(yīng)該是比較常見的攻擊方式,比如POST攻擊,攻擊者可以隨便的改變要提交的數(shù)據(jù)值已達(dá)到攻擊目的.又如:COOKIES 的偽造,這一點(diǎn)更值得引起程序編寫者或站長(zhǎng)的注意,不要使用COOKIES來做為用戶驗(yàn)證的方式,否則你和把鑰匙留給賊是同一個(gè)道理.
比如: If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd") =”fqy#e3i5.com” then
……..more………
End if
我想各位站長(zhǎng)或者是喜好寫程序的朋友千萬別出這類錯(cuò)誤,真的是不可饒恕.偽造COOKIES 都多少年了,你還用這樣的就不能怪別人跑你的密碼.涉及到用戶密碼或者是用戶登陸時(shí),你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一個(gè)信息,SessionID,它的隨機(jī)值是64位的,要猜解它,不可能.例:
if not (rs.BOF or rs.eof) then
login="true"
Session("username"&sessionID) = Username
Session("password"& sessionID) = Password
‘Response.cookies(“username”)= Username
‘Response.cookies(“Password”)= Password
下面我們來談?wù)勅绾畏婪哆h(yuǎn)程注入攻擊,一般的攻擊都是將單表提交文件拖到本地,將Form ACTION=”chk.asp” 指向你服務(wù)器中處理數(shù)據(jù)的文件即可.如果你全部的數(shù)據(jù)過濾都在單表頁上,那么恭喜你,你將已經(jīng)被腳本攻擊了.
怎么才能制止這樣的遠(yuǎn)程攻擊?好辦,請(qǐng)看代碼如下: 程序體(9)‘個(gè)人感覺上面的代碼過濾不是很好,有一些外部提交竟然還能堂堂正正的進(jìn)來,于是再寫一個(gè).
‘這個(gè)是過濾效果很好,建議使用.
if instr(request.servervariables("http_referer"),"http://";&request.servervariables("host") )<1 then response.write
"處理 URL 時(shí)服務(wù)器上出錯(cuò)。
如果您是在用任何手段攻擊服務(wù)器,那你應(yīng)該慶幸,你的所有操作已經(jīng)被服務(wù)器記錄,我們會(huì)第一時(shí)間通知公安局與國家安全部門來調(diào)查你的IP. "
程序體(9)
本以為這樣就萬事大吉了,在表格頁上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越來什么.你別忘了,攻擊者可以突破sql注入攻擊時(shí)輸入框長(zhǎng)度的限制.寫一個(gè)SOCKET程序改變HTTP_REFERER?我不會(huì)。網(wǎng)上發(fā)表了這樣一篇文章: ------------len.reg-----------------
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/擴(kuò)展(&E)]
@="C:/Documents and Settings/Administrator/桌面/len.htm"
"contexts"=dword:00000004
-----------end----------------------
-----------len.htm------------------
----------end-----------------------
用法:先把len.reg導(dǎo)入注冊(cè)表(注意文件路徑)
然后把len.htm拷到注冊(cè)表中指定的地方.
打開網(wǎng)頁,光標(biāo)放在要改變長(zhǎng)度的輸入框上點(diǎn)右鍵,看多了一個(gè)叫擴(kuò)展的選項(xiàng)了吧
單擊搞定! 后記:同樣的也就可以對(duì)付那些限制輸入內(nèi)容的腳本了.
怎么辦?我們的限制被饒過了,所有的努力都白費(fèi)了?不,舉起你de鍵盤,說不。讓我們繼續(xù)回到腳本字符的過濾吧,他們所進(jìn)行的注入無非就是進(jìn)行腳本攻擊。我們把所有的精力全都用到ACTION以后的頁面吧,在chk.asp頁中,我們將非法的字符全部過濾掉,結(jié)果如何?我們只在前面虛晃一槍,叫他們?nèi)ジ淖?cè)表吧,當(dāng)他們改完才會(huì)發(fā)現(xiàn),他們所做的都是那么的徒勞。
8、ASP木馬
已經(jīng)講到這里了,再提醒各位論壇站長(zhǎng)一句,小心你們的文件上傳:為什么論壇程序被攻破后主機(jī)也隨之被攻擊者占據(jù)。原因就在……對(duì)!ASP木馬!一個(gè)絕對(duì)可惡的東西。病毒么?非也.把個(gè)文件隨便放到你論壇的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木馬被上傳到服務(wù)器呢?方法很簡(jiǎn)單,如果你的論壇支持文件上傳,請(qǐng)?jiān)O(shè)定好你要上傳的文件格式,我不贊成使用可更改的文件格式,直接從程序上鎖定,只有圖象文件格式,和壓縮文件就完全可以,多給自己留點(diǎn)方便也就多給攻擊者留點(diǎn)方便。怎么判斷格式,我這里收集了一個(gè),也改出了一個(gè),大家可以看一下:
程序體(10)
’判斷文件類型是否合格
Private Function CheckFileExt (fileEXT)
dim Forumupload
Forumupload="gif,jpg,bmp,jpeg"
Forumupload=split(Forumupload,",")
for i=0 to ubound(Forumupload)
if lcase(fileEXT)=lcase(trim(Forumupload(i))) then
CheckFileExt=true
exit Function
else
CheckFileExt=false
end if
next
End Function
‘驗(yàn)證文件內(nèi)容的合法性 set MyFile = server.CreateObject ("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile (sFile, 1) ’ 讀取文本文件
sTextAll = lcase(MyText.ReadAll): MyText.close
’判斷用戶文件中的危險(xiǎn)操作
sStr ="8 .getfolder .createfolder .deletefolder .createdirectory
.deletedirectory"
sStr = sStr & " .saveas wscript.shell script.encode"
sNoString = split(sStr," ")
for i = 1 to sNoString(0)
if instr(sTextAll, sNoString(i)) <> 0 then
sFile = Upl.Path & sFileSave: fs.DeleteFile sFile
Response.write "
"& sFileSave &"文件中含有與操作目錄等有關(guān)的命令"&_
"
"& mid(sNoString(i),2) &",
為了安全原因,不能上傳。"&_"
"
Response.end
end if
next
把他們加到你的上傳程序里做一次驗(yàn)證,那么你的上傳程序安全性將會(huì)大大提高.
什么?你還不放心?拿出殺手锏,請(qǐng)你的虛擬主機(jī)服務(wù)商來幫忙吧。登陸到服務(wù)器,將PROG ID 中的
"shell.application"項(xiàng)和"shell.application.1"項(xiàng)改名或刪除。再將”WSCRIPT.SHELL”項(xiàng)和”WSCRIPT.SHELL.1”
這兩項(xiàng)都要改名或刪除。呵呵,我可以大膽的說,國內(nèi)可能近半以上的虛擬主機(jī)都沒改過。只能慶幸你們的用戶很合作,否則……我刪,我刪,我刪刪刪……
本文章由南寧網(wǎng)站建設(shè)、南寧網(wǎng)站優(yōu)化、南寧網(wǎng)絡(luò)公司整理,轉(zhuǎn)載請(qǐng)注明出處:http://m.lidajijin.com/