轉(zhuǎn)自:陸柏熺
所有的PHP源碼網(wǎng)站都必須配置環(huán)境,不論是使用集成環(huán)境還是自己手動搭建,可能很少有人關(guān)注過php.ini里面配置的這些東西到底有什么作用蠢壹。很多站長在設(shè)置php.ini文件時,都是網(wǎng)上找一個教程九巡,然后人家說哪里增加哪里刪除按步驟進行图贸,但是這里面的設(shè)置還真有兩處會引起網(wǎng)站安全問題。
有人會說就一個php.ini文件怎么可能會有安全問題呢冕广,難不成hacker會攻擊我的php.ini文件不成疏日?
這倒不是啦,而是運行方式會給hacker提供一個窗口撒汉,請看下面的配置步驟說明沟优。
以windows系統(tǒng)上安裝PHP為例,所有版本的php.ini文件的設(shè)置幾乎都是一樣的睬辐,先去官方網(wǎng)站下載需要的PHP版本挠阁,然后解壓縮并重命名。
假設(shè)安裝php7.4溯饵,安裝在服務(wù)器的D盤根目錄:下載Non-Thread Safe (NTS) 版本的PHP程序侵俗,然后解壓縮,并重命名為“php”文件夾丰刊,將其拷貝到D盤根目錄下面坡慌。
打開D:\php下的php.ini-development文件,復(fù)制一份并將其重命名為php.ini藻三,打開D:\php\php.ini文件洪橘,下面是完整的配置過程跪者。
1、將short_open_tag = Off改為
short_open_tag = On
這樣修改的作用是一些網(wǎng)站的模板文件中使用了如<? 熄求?>這樣的php代碼渣玲,可保證代碼可以正常執(zhí)行,在ecshop弟晚、dedecms和WordPress等模板中也都常見于這類代碼忘衍。
2、將expose_php = On卿城,將其改為
expose_php = Off
作用是出于網(wǎng)站安全枚钓,禁止顯示php的版本號,防止別人針對特定php版本漏洞攻擊網(wǎng)
站瑟押。有的網(wǎng)站你用站長工具一查搀捷,使用的是什么web服務(wù)器、PHP版本是多少都一目了然多望,對于特定的PHP版本漏洞嫩舟,hiker當然是知道的,隱藏版本號雖不能說解決了問題怀偷,但是會給hiker增加難度家厌。
3、查找如下代碼
; On windows:
將這里的extension_dir前面的分號去掉椎工,并且把ext修改為PHP的安裝路徑饭于,如下所示。注意斜杠不要寫反了维蒙,因為我把PHP安裝在D盤的掰吕。
extension_dir = "D:\php\ext"
4、查找max_execution_time = 30木西,將數(shù)字30修改為300或1200畴栖。作用是每個腳本執(zhí)行的最大時間随静,默認是30秒八千,解決可能因為網(wǎng)速和服務(wù)器的地址(如國外主機)可能會總是連接超時的問題。
5燎猛、搜索恋捆;cgi.force_redirect = 1,把前面的分號去掉重绷,并把數(shù)字1改為0沸停。cgi.force_redirect = 0的意思就是關(guān)閉重定向執(zhí)行php文件,出于安全考慮防止別人上傳木馬執(zhí)行如:你的網(wǎng)站url/as=你的網(wǎng)站url/sdf/muma.php昭卓,這樣的重定向PHP文件是可執(zhí)行的愤钾,將這個配置改為0之后這類型的重定向PHP文件就不會執(zhí)行了瘟滨。
這也是為什么有的網(wǎng)站總是被掛馬的原因,這樣修改之后即便是網(wǎng)站前臺存在安全漏洞能颁,被hiker上傳了木馬文件杂瘸,通過這樣的方式木馬文件不會運行,所以沒有用伙菊。
6败玉、查找代碼;cgi.fix_pathinfo=1將分號去掉并將數(shù)字1改為0镜硕。作用是禁止解析非法php文件运翼,如/a.jpg/1.php這樣的圖片下的一個php文件屬于非法的,設(shè)置為0就是禁止執(zhí)行兴枯。這種將木馬偽裝成圖片上傳的文件存在已久血淌,禁止這類文件運行,即使被上傳了木馬念恍,由于設(shè)置了不允許運行六剥,所以沒有用。
7峰伙、查找代碼fastcgi.impersonate = 1將前面的分號去掉疗疟。作用是iis或nginx使用的是fastcgi方式解析php文件,不開啟就不能運行php程序瞳氓,Apache則不用開啟策彤。
8、搜索 cgi.rfc2616_headers = 0 去掉分號并把0改為1匣摘。意思是告訴php使用什么樣的報頭店诗,什么是報頭呢?就像這個:HTTP/1.1音榜。
9庞瘸、搜索upload_tmp_dir =,將前面的分號刪除并添加路徑如下:
upload_tmp_dir = D:\php\temp
意思是上傳文件的臨時目錄赠叼,用來存放網(wǎng)站上傳文件的臨時虛擬目錄擦囊,但是不會真的上傳任何文件在里面。
10嘴办、分別搜索以下代碼瞬场,一行一個,分別去掉其前面的分號(分號表示注釋涧郊,不生效的意思贯被,去掉就生效了):
extension=bz2
11、查找date.timezone =刪除分號并修改為如下這樣:
date.timezone = Asia/Shanghai
注意大小寫,意思是格式化時間彤灶,默認使用北京時間(東8區(qū))看幼,這樣可以使服務(wù)器時間和程序的時間一致,否則可能你發(fā)文章顯示的時時間會和實際時間不一樣幌陕,如果不設(shè)置時間可能會相差8小時桌吃,也可以設(shè)置為date.timezone = PRC ,設(shè)置時區(qū)為中國時區(qū)苞轿,PRC是中國時區(qū)的簡稱茅诱。
以上就是完整的php.ini文件配置,真的有3處設(shè)置和網(wǎng)站的安全有關(guān)系搬卒,由于這個文件一般只會設(shè)置一次瑟俭,之后都不會去更改,所以有的問題也不容易被發(fā)現(xiàn)契邀。