預防文件包含漏洞的措施有以下這些:
設置白名單:代碼在進行文件包含時,如果文件名可以確定,可以設置白名單對傳入的參數進行比較。如果需要使用文件包含,則通過使用白名單的方法對要包含的文件進行限制,這樣可以做到既使用了文件包含,又可以防止文件包含漏洞。
過濾危險字符:嚴格限制包含中的參數,取消那些不可控的參數。由于Include Require可以對PHP Wrapper形式的地址進行包含執行(需要配置php.ini),在Linux環境中可以通過”../../”的形式進行目錄繞過,所以需要判斷文件名稱是否為合法的PHP文件。
設置文件目錄:PHP配置文件中有open_basedir選項可以設置用戶需要執行的文件目錄,如果設置目錄的話,PHP僅僅在該目錄內搜索文件。
關閉危險配置:PHP配置中的allow_url_include選項如果打開,PHP會通過Include Require進行遠程文件包含,由于遠程文件的不可信任性及不確定性,在開發中禁止打開此選項,PHP默認是關閉的。
禁用相應函數:如果不需要文件包含,則關閉allow_url_include()函數,防止遠程文件包含,這是最安全的辦法。
回答所涉及的環境:聯想天逸510S、Windows 10。
預防文件包含漏洞的措施有以下這些:
設置白名單:代碼在進行文件包含時,如果文件名可以確定,可以設置白名單對傳入的參數進行比較。如果需要使用文件包含,則通過使用白名單的方法對要包含的文件進行限制,這樣可以做到既使用了文件包含,又可以防止文件包含漏洞。
過濾危險字符:嚴格限制包含中的參數,取消那些不可控的參數。由于Include Require可以對PHP Wrapper形式的地址進行包含執行(需要配置php.ini),在Linux環境中可以通過”../../”的形式進行目錄繞過,所以需要判斷文件名稱是否為合法的PHP文件。
設置文件目錄:PHP配置文件中有open_basedir選項可以設置用戶需要執行的文件目錄,如果設置目錄的話,PHP僅僅在該目錄內搜索文件。
關閉危險配置:PHP配置中的allow_url_include選項如果打開,PHP會通過Include Require進行遠程文件包含,由于遠程文件的不可信任性及不確定性,在開發中禁止打開此選項,PHP默認是關閉的。
禁用相應函數:如果不需要文件包含,則關閉allow_url_include()函數,防止遠程文件包含,這是最安全的辦法。
回答所涉及的環境:聯想天逸510S、Windows 10。