欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

安全腳本程序的編寫 V1.0第3/3頁

 更新時間:2006年11月23日 00:00:00   作者:  

我看到過很多的對腳本的加密方法,都很不錯,有的是專門的加密軟件,有的是通過一些技巧加上利用語言的特性進行加
密的,例如隨機生成一個
密匙,把密匙放在"不可見的"地方,通過一些算法對腳本進行加解密,就是由于某些系統(tǒng)漏洞導(dǎo)致你的腳本源代碼泄漏,
也無濟于事。
4 .實例說明
下面這個例子是在網(wǎng)上經(jīng)常被提到的,這是個非常經(jīng)典的例子,所以在這里通過這個實例告訴大家可能存在的危險。
問題描述:
  大部分網(wǎng)站把密碼放到數(shù)據(jù)庫中,在登陸驗證中用以下sql,(以asp為例) 
sql="select * from user where username='"&username&"'and pass='"& pass &'" 
  此時,您只要根據(jù)sql構(gòu)造一個特殊的用戶名和密碼,如:ben' or '1'='1 
就可以進入本來你沒有特權(quán)的頁面。再來看看上面那個語句吧: 
sql="select * from user where username='"&username&"'and pass='"& pass&'" 
  此時,您只要根據(jù)sql構(gòu)造一個特殊的用戶名和密碼,如:ben' or '1'='1 這樣,程序?qū)兂蛇@樣: 
sql="select*from username where
username="&ben'or'1'=1&"and pass="&pass&" or 是一個邏輯運算符,作用是在判斷兩個條件的時候,只要其中一個條件成
立,那么等式
將會成立.而在語言中,是以1來代表真的(成立).那么在這行語句中,原語句的"and"驗證將不再繼續(xù),而因為"1=1"和"or"令
語句返回為真值.。
  另外我們也可以構(gòu)造以下的用戶名: 
username='aa' or username<>'aa'
pass='aa' or pass<>'aa'
  相應(yīng)的在瀏覽器端的用戶名框內(nèi)寫入:aa' or username<>'aa 口令框內(nèi)寫入:aa' or pass<>'aa,注意這兩個字符串
兩頭是沒有'的。這
樣就可以成功的騙過系統(tǒng)而進入。
具體實施是這樣的,首先我會到注冊的地方去收集信息,了解盡可能多的信息,例如目標(biāo)數(shù)據(jù)庫中都有用戶的什么樣的信
息,隨便的填寫信息然后
提交,當(dāng)你要注冊的用戶名被注冊的是有系統(tǒng)會提示你已被注冊,有的網(wǎng)站做的更好的,就是他們專門給你設(shè)置的檢測是
否有已經(jīng)被注冊的功能,
通過這樣就會非常容易的找到目標(biāo)--那個提示已被注冊的用戶,讓后你在這個注冊頁里填寫一些特殊的字符,如',/,,等
字符看系統(tǒng)如何提示,以
證明程序員是否注意到了應(yīng)該過濾字符或懂得是否應(yīng)該過濾那些字符,在這頁進行嘗試是因為有的網(wǎng)站在登錄的時候他會
記錄你的ip地址,當(dāng)然你
也可以找一個比你直接登錄要快的代理服務(wù)器來做跳板。后面你要做的就是察看登錄頁的html源代碼,看看是否有在客戶
端的字符過濾,看看這個
程序員是用什么風(fēng)格來編寫程序,盡可能多的了解程序編寫風(fēng)格,這對你以后的某些判斷有好處。如果有在客戶端的過濾
也不怕,你要搞清是什么
樣的過濾,能不能對攻擊造成威脅,不要一看有過濾就害怕,可以嘗試著用別的方法繞,就是使用自己精心打造的獨立腳
本,進行攻擊。然后你要
看看form的action中的url是否可以直接提交,在瀏覽器地址欄里直接提交,看看返回什么,是否有來路檢測。還有很多細
小的地方,你也應(yīng)該可
以注意到,例如那些地方程序員的整體的編寫風(fēng)格是什么,變量名定義的風(fēng)格是什么等等,這個會幫我們"猜"到很多東
西。還有別的其他什么,我
也記不太清楚了,臨場發(fā)揮吧。通過這些了解我們有如下幾種可能:
1.那個程序員非常善良相信全世界都是好人,什么都沒做,根本沒有任何檢測機制,我們直接用username='aa' or 
username<>'aa',
pass='aa' or pass<>'aa'就可以搞定,現(xiàn)在這么善良的人少啦,可是你要是有耐心,找到這種人還是不難的。
2.這個程序員可能聽別人提起過一些安全問題,畢竟現(xiàn)在這個那里都有人說,很多書中都有提及,但是做得不夠好,他只
進行了簡單的輸入過濾。
過濾有兩種方式,一種是在客戶端的過濾,一種是在服務(wù)器端的過濾?,F(xiàn)在很多的程序員考慮到再服務(wù)器端進行過濾可能
給服務(wù)器造成更多的負荷
,會把檢測過程放在客戶端。如果他在服務(wù)器端沒做任何事情,那么還是可以對其進行攻擊的,我可以將這個登錄頁的源
代碼COPY下來,然后自
己建立一個文件把這些代碼PASTE進去,再對這個文件進行進一步的深加工,去掉原來頁的過濾機制,或者直接將攻擊代碼
寫到這個文件中去,然
后將form中的action中的地址改成絕對地址,也就是將文件名改成"http://www.target.com/targer.php"這樣,然后就可
以提交啦。但是如
果服務(wù)器端加上了"來路檢測",你就白玩了。如果這樣還是不行,我再換一種方法,在瀏覽器的地址欄里用?來輸入?yún)?
數(shù),就好像
"http://www.targer.com/targer.php?username='aa' or username<>'aa'&pass='aa' or pass<>'aa' "然后敲回車吧,其
實應(yīng)該先
嘗試這種方法因為這用方法更簡單,防護起來也很簡單,這種提交方式不是post 而是get ,只要服務(wù)器端程序檢測你的提
交方法,就可以kill掉這
個陰謀。如果單純的只檢測了"來路",還是不太安全的,可以先正確的提交一次,在提交過程中馬上停止,就是保存這個
環(huán)境,然后再構(gòu)造請求。
(我做過幾次試驗得到的結(jié)果都不太一樣,應(yīng)該是和終止的時機有關(guān),歡迎大家來交流)。
3.一個很出色的程序員,安全意識非常高,他在服務(wù)器端做了如下檢測:檢測提交的方法;檢測提交的"來路";檢測提交
內(nèi)容的長度;全面檢測提
交內(nèi)容,這樣我們就很難通過上面的方法對其進行攻擊,那到保密的資料就已經(jīng)不太可能了(如果各位還有什么好的辦
法,請一定來信告訴小弟,
小弟在這里先謝了)。但是我還想說的是攻擊并不代表是非要入侵進去,拿到某些東西才叫入侵,對你的機器進行破壞也
叫入侵啊,例如提交一些
錯誤的請求,腳本解釋程序就會非常規(guī)矩的給你返回錯誤信息,最淺顯的后果就是暴露物理路經(jīng),有的時候一些特殊的請
求會使web服務(wù)宕掉,這
些個我認為絕對是屬于攻擊,絕對是危害,也許你認為暴露物理路徑?jīng)]有什么,是在單獨看來沒有什么,但要是在一個有
計劃的攻擊里,這個就會
發(fā)揮很多作用,那時你可能還會莫名為什么他們找到了我的文件呢。也許有人認為這個是腳本解釋程序的bug,也許有的
是,但是返回錯誤信息絕
對不是腳本解釋程序的錯誤,這個是每個解釋程序都要做到的,在我看來這個應(yīng)該是還是程序員的問題,程序員沒有做好
對錯誤的處理。每一本教
你如何編寫程序的書籍里基本都會有錯誤處理之類的章節(jié),并且每種語言基本都有錯誤處理函數(shù)和方法,只不過你沒有想
到罷了。至于究竟要怎么
處理那就要看你對cgi程序安全的熟悉程度了,那就要看你對這種腳本語言的特性熟悉多少了,說到底就是經(jīng)驗,唯一的辦
法就是多看多寫多想多
交流。
4.非常優(yōu)秀的程序員,以上那些做的都非常好(也許就是你啊,畢竟不難嘛,加上很少的代碼就可以了),怎么辦??怎
么辦?!怎么辦!!在一
旁偷偷的佩服吧!哈哈。
5. 其它注意事項:思路和方法
指導(dǎo)思想:
I.嚴(yán)格控制程序與用戶交互的途徑
II.嚴(yán)格控制程序與用戶交互的內(nèi)容
III.盡可能好的保護我們控制
基本思路:
I.為沒一個功能寫一個獨立的程序,程序頁
II.盡可能少的讓客戶了解你的服務(wù)器端信息
III.不要用"客戶應(yīng)該這么寫"這個思路想問題
IV.盡可能多的想到不可能發(fā)生的事情
基本方法:
盡可能多的控制交互:
I.檢測提交的方法,就是控制他的post還是get;
II.檢測提交的"來路",就是檢測一個環(huán)境變量HTTP_REFERER;
III.檢測提交內(nèi)容的長度;
IV全面檢測提交內(nèi)容;
積極-消極防護:
I.盡可能多的錯誤處理,例如當(dāng)檢測到了不正確的輸入時,應(yīng)該怎么做,是強制返回,還是發(fā)出警告;
II.充分發(fā)揮日志功用,例如在你檢測到了不正確的提交時,就記錄下客戶端的信息,例如IP,系統(tǒng)配置,請求等等,畢竟
現(xiàn)在是技術(shù)飛躍的時代,
不能保證可以想到每一種可能,這也是我在這篇文章里不止一次提到"盡可能"這個詞的原因。充分的日志記錄不全是為了
抓住入侵者(如果入侵者
使用了跳板,記錄了IP也是沒有用的),更重要的是為了能發(fā)現(xiàn)問題的所在,找到問題,改正問題,亡羊補牢,這個才是
最重要的。
III.充分發(fā)揮你的想象力,用一種入侵者的思想考慮問題,用一種另類的思想考慮問題,盡可能想到不可能發(fā)生的事,把
問題扼殺在萌芽里。
我們xundi哥說的好:掌握方法?。?!現(xiàn)在腳本語言層出不窮,asp,perl,php,jsp等等,基本不可能精通每一種,(也
許你厲害,都能精通,
我比較呆,會一個就不錯啦),但是要是掌握了方法就不同了啊,各位網(wǎng)絡(luò)的精英舉一反三觸類旁通,肯定是優(yōu)秀的不得
了。我寫腳本一共也沒多
少天,寫這個東西我知道肯定是班門弄斧了,錯誤之處還請各位大蝦抱著挽救和幫助的精神,告知小弟(方式、方法、態(tài)
度不限),小弟我在這里
先謝了。寫這個東西,我只是想說說小弟的一些小的心得,與大家共勉,我想告訴大家的就是"領(lǐng)會精神",嘿嘿,"領(lǐng)會精
神"。大家要是有什么好
的方法,希望不要保留,充分發(fā)揮網(wǎng)絡(luò)的自用共享,拿出來,大家交流交流,不勝感激。
襲來的,這種東西小弟不敢自己寫(嘿嘿,實際還有不少懶的成分,哈哈),希望大家不要見怪。

相關(guān)文章

最新評論