關於指令碼安全這個話題好像永遠沒完沒了,如果你經常到國外的各種各樣的bugtraq上,你會發現有一半以上都和指令碼相關,諸如sql injection,xss,path disclosure,remote commands execution這樣的字眼比比皆是,我們看了之後的用途難道僅僅是抓肉雞?對於我們想做web安全的人來說,最好就是拿來學習,可是萬物抓根源,我們 要的不是魚而是漁。在國內,各種各樣的php程式1.0版,2.0版像雨後春筍一樣的冒出來,可是,大家關注的都是一些著名的cms,論壇,blog程 序,很少的人在對那些不出名的程式做安全檢測,對於越來越多的php程式設計師和站長來說,除了依靠伺服器的堡壘設定外,php程式本身的安全多少你總得懂點吧。
有人說你們做php安全無非就是搞搞注入和跨站什麼什麼的,大錯特錯,如果這樣的話,乙個magic_quotes_gpc或者伺服器裡的一些安全設定就讓我們全沒活路了。我今天要說的不是注入,不是跨站,而是存在於php程式中的一些安全細節問題。ok!切入正題。
注意一些函式的過濾
有些函式在程式中是經常使用的,像include(),require(),fopen(),fwrite(),readfile(),unlink(),eval()以及它們的變體函式等等。這些函式都很實用,實用並不代表讓你多省心,你還得為它們多費點心。
1、include(),require()和fopen(),include_once(),require_once()這些都可以遠端呼叫文 件,對於它們的危害,google搜一下你就會很明了,對於所包含呼叫的變數沒過濾好,就可以任意包含檔案從而去執行。舉個例子,看print.php
以下為引用的內容:
…if (empty ($bn) ) .php」); //把$cfg_dir這個路徑裡的site_$.php包含進來
…不管存不存在$cfg_dir目錄,$site這個變數你可以很自然的去使用,因為他根本沒檢查$site變數啊。可以把變數$site指定遠端檔案去呼叫,也可以是本地的乙個檔案,你所指定的檔案裡寫上php的語句,然後它就去包含執行這個含有php 語句的檔案了。
列出檔案目錄
甚至可以擴充套件到包含一些管理員檔案,提公升許可權,典型的像以前phpwind,bo-blog的漏洞一樣。除了依靠php.ini裡的 allow_url_fopen設為off禁止遠端使用檔案和open_base_dir禁止使用目錄以外的檔案外,你還得事先宣告好只能包含哪些檔案, 這裡就不多說廢話了。
2、fopen(),file(),readfile(),openfile(),等也是該特別留意的地方。函式本身並沒什麼,它們的作用是去開啟檔案,可是如果對變數過濾不徹底的話,就會洩露源**。這樣的函式文字論壇裡會有很多。
以下為引用的內容:
…$articlearray=openfile(「$dbpath/$fid/$tid.php」); //開啟$dbpath/$fid這個路徑的$tid.php檔案
$topic_detail=explode(「|」,$articlearray[0]); //用分割符|讀出帖子的內容
…很眼熟吧,這是ofstar以前版本的read.php,$fid和$tid沒有任何過濾,$tid指定為某個檔案提交,就發生了原**洩露。
PHP中雜湊密碼的安全性分析
php的基本雜湊函式已經不再安全?php手冊中有專門的乙個部分來介紹這個問題 很多應用,都是將使用者的密碼都是直接通過md5加密直接儲存到資料庫中的,包括我最近在用的開源專案zabbix的web管理介面。password 1234 hash md5 password echo res php常用的雜...
雲分析 之五《如何選擇適合你的「雲」》
2015 04 01 東方雲洞察 說明 本文把目前雲計算對企業業務和it能力構建方式的不同優缺點做了乙個簡單的點評,整體來說文章在每個點上都不是很深入,僅做參考吧。正文 儘管雲計算非常火熱,並不是所有的企業都要遷移到雲上,事實上目前只有少數企業和組織把他們的it遷移到雲,有很多合理的理由使得企業更願...
安全架構之Https 讓你的隱私資料不再暴露
一.常見的加密方式 對稱加密和非對稱加密 二.對稱加密演算法 特點 加密和解密的金鑰相同 問題 網路是不安全的,如何實現金鑰的安全傳輸?三.非對稱加密演算法 特點 傳送方和接收方各持有一對鑰匙 公鑰 和私鑰 用公鑰 私鑰 加密的資料只有對用的私鑰 公鑰 才能解密。四.非對稱加密 對稱加密 1 傳送方...