程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php漏洞對策

php漏洞對策

編輯:關於PHP編程

其實從編程的角度來講PHP是沒什麼問題的,主要是使用PHP這種語言編出來的東西是否涉及安全了.
PHP的運行,是靠它的語言解釋器來完成的,在NT或WIN9X下也就是PHP.EXE,PHP.EXE是一個解釋器,它的作用是解釋後綴為.PHP或.PHP3或.PHTML或其它的文件,根據裡邊定義的程序來訪問數據庫,讀寫文件或執行外部命令.並將執行的結果組織成STRING返回給WEB SERVER然後當作HTML格式的文件發送給浏覽器.
知道了它工作的過程我們就可以探討其SECURITY問題了,上述文件中我們提到過 PHP.EXE,提到過讀取文件,和執行外部命令,其實這些都是安全隱患只所在,在MS-DOS下可以使用PHP.EXE讀任何文件的內容,因為它本身的工作機制也就是讀文件內容,把該解釋的解釋,該過濾的過濾.所以我們就可以利用它的這一特性通過WEB讀任何我們想讀文件的內容,當然這不是這麼簡單,這需要WEB SERVER的配合,這是後話,我們以後在講.
PHP的第二個特性是讀取文件的內容,有很多CGI漏洞就是由此特性造成的,很簡單的一段程序:它的任務就是讀變量$file的內容,程序員在程序調用中可能會天真的想,我就讀A文件http://shabi.com/index.php3?file=a.txt 它沒有對FILE這個變量做嚴格的限制,就導致安全問題的產生,我想稍微有點安全知識的人也知道把A.TXT修改為:/etc/passwd或NT下的../../../../../winnt/repair/sam._了
PHP的第三個特性是執行外部命令,在UNIX下比較多見:ls,echo等等,其實這是最容易出問題的,大家都知道SHELL可以連續的執行命令,用管道符|:或者~都可以,在這裡我就順便說個想法讓大家和我一起探討,這是關於WEB MAIL的,當然也和WEB編程有關,一般來說我們申請一個MAIL需要注冊,而注冊的時候,大都對姓名有限制,如長度等等,不過對密碼的限制不嚴格,長度也大些,而MAIL程序可能需要調用SHELL命令來執行用戶的添加,比如叫:ADD USER吧,參數是用戶名和密碼.add user lovehacker 1234567那如果我的密碼為:a|reboot會怎麼樣呢?嘿嘿如果它沒有把密碼加密,而且添加用戶使用的權限夠大的話,哈哈就會讓它從新啟動COMPUTER,當然如果它要加密的話也行,比如用MD5或DES我們都可以寫段程序讓加密後的STRING為:rf -rm /*當然這只是個想法啦,我還沒實踐過:_)工作太忙了!當然通過我以上的想法你也可以看出執行SHELL命令而不做嚴格的判斷有多麼的嚴重!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved