首頁 >後端開發 >php教程 >php.ini配置中有3處設定不當會使網站有安全問題

php.ini配置中有3處設定不當會使網站有安全問題

藏色散人
藏色散人轉載
2020-03-20 13:28:002498瀏覽

所有的PHP原始碼網站都必須配置環境,無論是使用集成環境還是自己手動搭建,可能很少有人關注過php.ini裡面配置的這些東西到底有什麼作用,很多站長在設定php.ini檔案時,都是網路上找一個教程,然後人家說哪裡增加哪裡刪除按步驟進行,但是這裡面的設定還真有兩處會引起網站安全問題。

php.ini配置中有3處設定不當會使網站有安全問題

有人會說就一個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:\php\php.ini文件,以下是完整的設定過程。

php.ini配置中有3處設定不當會使網站有安全問題

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:\php\ext"

4、尋找max_execution_time = 30,將數字30修改為3001200。作用是每個腳本執行的最大時間,預設是30秒,解決可能因為網速和伺服器的位址(如國外主機)可能總是連接逾時的問題。

5、搜尋;cgi.force_redirect = 1,把前面的分號去掉,並把數字1改為0cgi.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將前面的分號去掉。作用是iisnginx使用的是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

意思是上傳檔案的臨時目錄,用來存放網站上傳文件的臨時虛擬目錄,但是不會真的上傳任何檔案在裡面。

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视频教程:https://www.php.cn/course/list/29/type/2.html    

以上是php.ini配置中有3處設定不當會使網站有安全問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:百家号:陆柏熺。如有侵權,請聯絡admin@php.cn刪除