PHP安全-防止Directory Traversal攻擊
對象: 程式設計師/資訊安全人員
難易度: ★★★☆☆
預備知識
PHP語法
介紹
Directory Traversal(目錄尋訪),網頁開發人員沒有做好目錄權限控管,讓網頁使用者可以任意瀏覽所有目錄及目錄中的檔案,檔案中的內容可能遭到偷看、刪除或改寫。
Directory Traversal本身並不是攻擊,多半是用來成就其他攻擊的手段。
常見缺失
一般最常見的弱點程式碼,利用GET方式取得指定的檔案
<?php readfile(‘/home/user/data’.$_GET[‘data_file’]) ?>
倘若使用下列URL存取有弱點的網站
http://hostname/readfile.php?datafile=http://www.cnblogs.com/../etc/passwd
則會造成主機中所有帳號都會顯示出來
解決方式
1. 加上open_basedir 將PHP程式可以開啟的目錄,直接設定於php.ini或httpd.conf中
php.ini
open_basedir = /home/user/:/tmp/
這時,所有的php程式可開啟的目錄都會受到open_base_dir的限制,多個目錄之間用冒號(:)隔開。
2. 撰寫一個字串檢查函式,當使用者輸入字串含有”..”等跳離根目錄關鍵字,則跳出字串有誤錯誤訊息,並且拒絕存取。
- 上一篇 »APP安全
- 下一篇 »APP安全性测试总结--网上转载