php.ini
裡面設定的這些東西到底有什麼作用,很多站長在設定php.ini檔案時,都是網上找一個教學,然後人家說哪裡增加哪裡刪除按步驟進行,但是這裡面的設定還真有兩處會引起網站安全問題。有人會說就一個php.ini
檔案怎麼可能會有安全問題呢,難不成hiker會攻擊的我php.ini
檔案不成?
這倒不是啦,而是執行方式會給hiker提供一個視窗,請看下面的設定步驟說明。
以windows
系統上安裝PHP
為例,所有版本的php.ini
檔案的設定幾乎都是一樣的,先去官方網站下載需要的PHP版本,然後解壓縮並重新命名。
假設安裝php7.4
,安裝在伺服器的D槽根目錄:下載Non-Thread Safe (NTS) 版本的PHP程式,然後解壓縮,並重新命名為「php」資料夾,將其拷貝到D槽根目錄下面。
開啟D:php
下的php.ini-development
檔案,複製一份並將其重新命名為php.ini
,開啟D:phpphp.ini
檔案,下面是完整的設定過程。
1、將short_open_tag = Off
改為
short_open_tag = On
這樣修改的作用是一些網站的模板檔案中使用了如<? ?>這樣的php程式碼,可保證程式碼可以正常執行,在ecshop、dedecms和WordPress等模板中也都常見於這類程式碼。
2、將expose_php = On
,將其改為
expose_php = Off
作用是出於網站安全,禁止顯示php的版本號,防止別人針對特定php版本漏洞攻擊網站。有的網站你用站長工具一查,使用的是什麼web伺服器、PHP版本是多少都一目了然,對於特定的PHP版本漏洞,hiker當然是知道的,隱藏版本號雖不能說解決了問題,但是會給hiker增加難度。
3、查詢如下程式碼
; On windows: ; extension_dir = "ext"
將這裡的extension_dir前面的分號去掉,並且把ext修改為PHP的安裝路徑,如下所示。注意斜槓不要寫反了,因為我把PHP安裝在D槽的。
extension_dir = "D:phpext"
4、查詢max_execution_time = 30
,將數位30
修改為300
或1200
。作用是每個指令碼執行的最大時間,預設是30秒,解決可能因為網速和伺服器的地址(如國外主機)可能會總是連線超時的問題。
5、搜尋;cgi.force_redirect = 1
,把前面的分號去掉,並把數位1
改為0
。cgi.force_redirect = 0
的意思就是關閉重定向執行php檔案,出於安全考慮防止別人上傳木馬執行如:你的網站url/as=你的網站url/sdf/muma.php
,這樣的重定向PHP檔案是可執行的,將這個設定改為0之後這型別的重定向PHP檔案就不會執行了。
這也是為什麼有的網站總是被掛馬的原因,這樣修改之後即便是網站前台存在安全漏洞,被hiker上傳了木馬檔案,通過這樣的方式木馬檔案不會執行,所以沒有用。
6、查詢程式碼;cgi.fix_pathinfo=1
將分號去掉並將數位1
改為0
。作用是禁止解析非法php檔案,如/a.jpg/1.php
這樣的圖片下的一個php檔案屬於非法的,設定為0就是禁止執行。這種將木馬偽裝成圖片上傳的檔案存在已久,禁止這類檔案執行,即使被上傳了木馬,由於設定了不允許執行,所以沒有用。
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:phptemp
意思是上傳檔案的臨時目錄,用來存放網站上傳檔案的臨時虛擬目錄,但是不會真的上傳任何檔案在裡面。
10、分別搜尋以下程式碼,一行一個,分別去掉其前面的分號(分號表示注釋,不生效的意思,去掉就生效了):
extension=bz2 extension=curl extension=gd2 extension=gmp extension=mbstring extension=php_mysql.dll extension=mysqli extension=pdo_mysql
11、查詢date.timezone =
刪除分號並修改為如下這樣:
date.timezone = Asia/Shanghai
注意大小寫,意思是格式化時間,預設使用北京時間(東8區),這樣可以使伺服器時間和程式的時間一致,否則可能你發文章顯示的時時間會和實際時間不一樣,如果不設定時間可能會相差8小時,也可以設定為date.timezone = PRC
,設定時區為中國時區,PRC是中國時區的簡稱。
以上就是完整的php.ini檔案設定,真的有3處設定和網站的安全有關係,由於這個檔案一般只會設定一次,之後都不會去更改,所以有的問題也不容易被發現。
本文來自:https://baijiahao.baidu.com/s?id=1660324056472707757&wfr=spider&for=pc
相關推薦:
以上就是php.ini設定中有3處設定不當會使網站存在安全問題的詳細內容,更多請關注TW511.COM其它相關文章!