網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 偽造Web請求(二)
注意b的值必須以URL編碼格式輸入。要將字符串進行URL編碼,可以使用一個簡單的PHP程序,例如:
kris@valiant:~/www < cat urlencode.php#! /home/kris/bin/php -q< ?php print urlencode($argv[1])."n";? >kris@valiant:~/www < ./urlencode.php "this is a test"this+is+a+test
|
發送HTTP POST請求只是稍微復雜一點:現在應該在這個請求中包含一個合法的Content-Type頭以及正確的內容長度字節數。下面是具體過程:
kris@valiant:~/www < telnet valiant 80Trying 193.102.57.3...Connected to valiant.koehntopp.de.Escape character is '^]'.POST /~kris/test.php HTTP/1.0Host: valiant.koehntopp.deReferer: http://www.attacker.com/die_sucker_die.htmlContent-Type: application/x-www-form-urlencodedContent-Length: 16b=this+is+a+testHTTP/1.1 200 OKDate: Sat, 08 Apr 2000 06:55:11 GMTServer: Apache/1.3.9 (Unix) (SuSE/Linux) PHP/4.0RC2-devmod_ssl/2.4.7 OpenSSL/0.9.4X-Powered-By: PHP/4.0RC2-devConnection: closeContent-Type: text/htmlThe value of b is this is a testThe value of HTTP_REFERER ishttp://www.attacker.com/die_sucker_die.htmlConnection closed by foreign host.
|
[page] 偽造Web請求(三)
另外一種常見的錯誤是把內部應用的狀態數據通過< INPUT TYPE="HIDDEN" >標記從一個頁面傳遞到另一個頁面。把內部應用的狀態放到信任界限之外就如把應用的心臟挖出來放到了攻擊者的面前。對于如此缺乏安全保障的應用,任何想要摧毀它的攻擊者都可以輕易地引導該應用并得到任何想要的效果。應用的狀態應該通過會話變量保存在服務器上,永遠不應該跨越信任界限。所有的Web應用開發平臺都有這種機制。例如在PHP3中,PHPLIB可用于保存會話數據,PHP4使用的是session_*()調用,ASP提供Session對象,Cold Fusion提供幾種不同的會話變量。
Web應用不應該把任何來自信任界線之外的數據直接保存為會話變量:會話變量是可信任的變量,不應該用來保存不可信任的數據。通常,來自外面的數據(比如表單變量的數據)應該先傳入檢驗其合法性的函數。只有當檢驗函數表示表單提供的數據是安全的,才可以把表單數據復制到會話變量。Web應用應該把這種檢查集中到一起進行,應用的所有其余部分永遠不應該直接接觸表單變量,而是應該使用經過檢查且確認安全的會話數據。
參考:
網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。
|