網絡工程師能夠從事計算機信息系統的設計、建設、運行和維護工作。下面是我為妳整理的網絡工程師面試題,希望對妳有所幫助!
1、用戶名與口令被破解
攻擊原理:用戶名與口令,往往是黑客們最感興趣的東西,如果被通過某種方式看到源代碼,後果是嚴重的。
防範技巧:涉及用戶名與口令的程序最好封裝在服務器端,盡量少在ASP文件裏出現,涉及與數據庫連接的用戶名與口令應給予最小的權限。出現次數多的用戶名與口令可以寫在壹個位置比較隱蔽的包含文件中。如果涉及與數據庫連接,在理想狀態下只給它以執行存儲過程的權限,千萬不要直接給予該用戶修改、插入、刪除記錄的權限。
2、驗證被繞過
攻擊原理:現在需要經過驗證的ASP程序大多是在頁面頭部加壹個判斷語句,但這還不夠,有可能被黑客繞過驗證直接進入。
防範技巧:需要經過驗證的ASP頁面,可跟蹤上壹個頁面的文件名,只有從上壹頁面轉進來的會話才能讀取這個頁面。
3、inc文件泄露問題
攻擊原理:當存在ASP的主頁正在制作且沒有進行最後調試完成以前,可以被某些搜索引擎機動追加為搜索對象。如果這時候有人利用搜索引擎對這些網頁進行查找,會得到有關文件的定位,並能在瀏覽器中查看到數據庫地點和結構的細節,並以此揭示完整的源代碼。
防範技巧:程序員應該在網頁發布前對它進行徹底的調試;安全專家則需要加固ASP文件以便外部的用戶不能看到它們。首先對.inc文件內容進行加密,其次也可以使用.asp文件代替.inc文件使用戶無法從瀏覽器直接觀看文件的源代碼。inc文件的文件名不要使用系統默認的或者有特殊含義容易被用戶猜測到的名稱,盡量使用無規則的英文字母。
4、自動備份被下載
攻擊原理:在有些編輯ASP程序的工具中,當創建或者修改壹個ASP文件時,編輯器自動創建壹個備份文件,比如:UltraEdit就會備份壹個.bak文件,如妳創建或者修改了some.asp,編輯器會自動生成壹個叫 some.asp.bak文件,如果妳沒有刪除這個bak文件,攻擊者可以直接下載some.asp.bak文件,這樣some.asp的源程序就會被下載。
防範技巧:上傳程序之前要仔細檢查,刪除不必要的文檔。對以BAK為後綴的文件要特別小心。
5、特殊字符
攻擊原理:輸入框是黑客利用的壹個目標,他們可以通過輸入腳本語言等對用戶客戶端造成損壞;如果該輸入框涉及數據查詢,他們會利用特殊查詢語句,得到更多的數據庫數據,甚至表的全部。因此必須對輸入框進行過濾。但如果為了提高效率僅在客戶端進行輸入合法性檢查,仍有可能被繞過。
防範技巧:在處理類似留言板、BBS等輸入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript語句,如無特殊要求,可以限定只允許輸入字母與數字,屏蔽掉特殊字符。同時對輸入字符的長度進行限制。而且不但要在客戶端進行輸入合法性檢查,同時要在服務器端程序中進行類似檢查。
6、數據庫下載漏洞
攻擊原理:在用Access做後臺數據庫時,如果有人通過各種方法知道或者猜到了服務器的Access數據庫的路徑和數據庫名稱,那麽他也能夠下載這個Access數據庫文件,這是非常危險的。
防範技巧:
(1)為妳的數據庫文件名稱起個復雜的非常規的名字,並把它放在幾層目錄下。所謂 ?非常規?,打個比方說,比如有個數據庫要保存的是有關書籍的信息,可不要給它起個?book.mdb?的名字,而要起個怪怪的名稱,比如d34ksfslf.mdb,並把它放在如./kdslf/i44/studi/的幾層目錄下,這樣黑客要想通過猜的方式得到妳的Access數據庫文件就難上加難了。
(2)不要把數據庫名寫在程序中。有些人喜歡把DSN寫在程序中,比如:
DBPath = Server.MapPath(?cmddb.mdb?)
conn.Open ?driver={Microsoft Access Driver (*.mdb)};dbq=? & DBPath
假如萬壹給人拿到了源程序,妳的Access數據庫的名字就壹覽無余了。因此建議妳在ODBC裏設置數據源,再在程序中這樣寫:
conn.open?shujiyuan?
(3)使用Access來為數據庫文件編碼及加密。首先在?工具?安全?加密/解密數據庫?中選取數據庫(如:employer.mdb),然後按確定,接著會出現?數據庫加密後另存為?的窗口,可存為:?employer1.mdb?。
要註意的是,以上的動作並不是對數據庫設置密碼,而只是對數據庫文件加以編碼,目的是為了防止他人使用別的工具來查看數據庫文件的內容。
接下來我們為數據庫加密,首先打開經過編碼了的 employer1.mdb,在打開時,選擇?獨占?方式。然後選取功能表的?工具?安全?設置數據庫密碼?,接著輸入密碼即可。這樣即使他人得到了 employer1.mdb文件,沒有密碼他也是無法看到 employer1.mdb中的內容。
7、防範遠程註入攻擊
這類攻擊在以前應該是比較常見的攻擊方式,比如POST攻擊,攻擊者可以隨便的改變要提交的數據值已達到攻擊目的.又如:COOKIES 的偽造,這壹點更值得引起程序編寫者或站長的註意,不要使用COOKIES來做為用戶驗證的方式,否則妳和把鑰匙留給賊是同壹個道理.
比如:
If trim(Request. cookies (?uname?))=?fqy? and Request.cookies(?upwd?) =?fqy#e3i5.com? then
..more?
End if
我想各位站長或者是喜好寫程序的朋友千萬別出這類錯誤,真的是不可饒恕.偽造COOKIES 都多少年了,妳還用這樣的就不能怪別人跑妳的密碼.涉及到用戶密碼或者是用戶登陸時,妳最好使用session 它才是最安全的.如果要使用COOKIES就在妳的COOKIES上多加壹個信息,SessionID,它的隨機值是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
下面我們來談談如何防範遠程註入攻擊,壹般的攻擊都是將單表提交文件拖到本地,將Form ACTION=?chk.asp? 指向妳服務器中處理數據的文件即可.如果妳全部的數據過濾都在單表頁上,那麽恭喜妳,妳將已經被腳本攻擊了.
怎麽才能制止這樣的遠程攻擊?好辦,請看代碼如下: 程序體(9)
?個人感覺上面的代碼過濾不是很好,有壹些外部提交竟然還能堂堂正正的進來,於是再寫壹個.
?這個是過濾效果很好,建議使用.
if instr(request.servervariables(? Explorer\MenuExt\擴展(&E)]
@=?C:\Documents and Settings\Administrator\桌面\len.htm?
?contexts?=dword:00000004
end?-
len.htm
?-end
用法:先把len.reg導入註冊表(註意文件路徑)
然後把len.htm拷到註冊表中指定的地方.
打開網頁,光標放在要改變長度的輸入框上點右鍵,看多了壹個叫擴展的選項了吧
單擊搞定! 後記:同樣的也就可以對付那些限制輸入內容的腳本了.
怎麽辦?我們的限制被饒過了,所有的努力都白費了?不,舉起妳de鍵盤,說不。讓我們繼續回到腳本字符的過濾吧,他們所進行的註入無非就是進行腳本攻擊。我們把所有的精力全都用到ACTION以後的頁面吧,在chk.asp頁中,我們將非法的字符全部過濾掉,結果如何?我們只在前面虛晃壹槍,叫他們去改註冊表吧,當他們改完才會發現,他們所做的都是那麽的徒勞。
8、ASP木馬
已經講到這裏了,再提醒各位論壇站長壹句,小心妳們的文件上傳:為什麽論壇程序被攻破後主機也隨之被攻擊者占據。原因就在對!ASP木馬!壹個絕對可惡的東西。病毒麽?非也.把個文件隨便放到妳論壇的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木馬被上傳到服務器呢?方法很簡單,如果妳的論壇支持文件上傳,請設定好妳要上傳的文件格式,我不贊成使用可更改的文件格式,直接從程序上鎖定,只有圖象文件格式,和壓縮文件就完全可以,多給自己留點方便也就多給攻擊者留點方便。怎麽判斷格式,我這裏收集了壹個,也改出了壹個,大家可以看壹下:
程序體(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
?驗證文件內容的合法性
set MyFile = server.CreateObject (?Scripting.FileSystemObject?)
set MyText = MyFile.OpenTextFile (sFile, 1) ? 讀取文本文件
sTextAll = lcase(MyText.ReadAll): MyText.close
?判斷用戶文件中的危險操作
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 &?文件中含有與操作目錄等有關的命令?&_
?
?& mid(sNoString(i),2) &?,為了安全原因,不能上傳。?&_?
?
Response.end
end if
next
程序體(10)