> 백엔드 개발 > PHP 튜토리얼 > php.ini 구성에는 웹사이트에 보안 문제를 일으킬 수 있는 3가지 부적절한 설정이 있습니다.

php.ini 구성에는 웹사이트에 보안 문제를 일으킬 수 있는 3가지 부적절한 설정이 있습니다.

藏色散人
풀어 주다: 2023-04-08 13:28:01
앞으로
2522명이 탐색했습니다.

모든 PHP 소스 코드 웹사이트는 통합 환경을 사용하든 수동으로 구축하든 환경을 구성해야 합니다. php.ini에 구성되어 있는 이러한 기능에 주의를 기울이는 사람은 거의 없을 것입니다. 많은 웹마스터들이 php.ini 파일을 설정할 때 인터넷에서 튜토리얼을 찾아보고, 단계에 따라 어디에 추가하고 삭제할지 알려줍니다. 그런데 여기에는 실제로 웹사이트 보안 문제를 일으킬 수 있는 두 가지 설정이 있습니다. . 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:phpphp.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 =

php.ini 구성에는 웹사이트에 보안 문제를 일으킬 수 있는 3가지 부적절한 설정이 있습니다. #🎜🎜##🎜🎜#어떤 사람들은 php.ini 파일에 보안 문제가 있을 수 있다고 말할 것입니다. 혹시 그 등산객이 내 php.ini</code를 공격할 수도 있나요? > 코드>파일이 실패했나요? #🎜🎜##🎜🎜#이것은 사실이 아니지만 러닝 모드는 등산객에게 창을 제공합니다. 아래 구성 단계를 참조하십시오. #🎜🎜##🎜🎜# <code>windows 시스템에 PHP를 설치하는 경우를 예로 들면 모든 버전의 php.ini설정이 code> 파일은 거의 동일합니다. 마찬가지로 먼저 공식 웹사이트로 이동하여 필요한 PHP 버전을 다운로드한 다음 압축을 풀고 이름을 바꿉니다. #🎜🎜##🎜🎜# php7.4가 서버 D 드라이브의 루트 디렉터리에 설치되어 있다고 가정합니다. NTS(Non-Thread Safe) 버전의 PHP 프로그램을 다운로드한 후 압축을 풉니다. "php" 폴더로 이름을 바꾸고 D 드라이브의 루트 디렉터리에 복사합니다. #🎜🎜##🎜🎜#D:php에서 php.ini-development 파일을 열고 복사본을 만든 다음 이름을 php.ini 로 바꿉니다. code>에서 D:phpphp.ini 파일을 엽니다. 다음은 전체 구성 프로세스입니다. #🎜🎜##🎜🎜#php.ini 구성에는 웹사이트에 보안 문제를 일으킬 수 있는 3가지 부적절한 설정이 있습니다. #🎜🎜##🎜🎜#1. short_open_tag = Off를 #🎜🎜#
date.timezone = Asia/Shanghai
로그인 후 복사
로그인 후 복사
#🎜🎜#으로 변경하면 일부 웹사이트 템플릿 파일에서 < ; ?? >이런 종류의 PHP 코드를 사용하면 코드가 정상적으로 실행될 수 있습니다. 이러한 유형의 코드는 ecshop, dedecs 및 WordPress와 같은 템플릿에서도 일반적입니다. #🎜🎜##🎜🎜#2. expose_php = On을 #🎜🎜#rrreee#🎜🎜#으로 변경합니다. 웹사이트 보안을 위해 php 버전 표시를 금지합니다. 다른 사람들이 특정 PHP 버전 취약점을 표적으로 삼는 웹사이트를 공격하는 것을 방지합니다. 일부 웹사이트의 경우 웹마스터 도구를 사용하여 확인하면 어떤 웹 서버를 사용하고 있는지, 어떤 PHP 버전인지 한눈에 알 수 있습니다. 물론 버전 번호를 숨길 수는 없지만 등산객은 특정 PHP 버전의 취약점을 알 수 있습니다. 문제를 해결한다고 하면 하이킹의 난이도가 높아질 것입니다. #🎜🎜##🎜🎜#3. 다음 코드를 찾아 #🎜🎜#rrreee#🎜🎜#여기에서 Extension_dir 앞의 세미콜론을 제거하고 ext를 아래와 같이 PHP 설치 경로로 변경합니다. 슬래시를 거꾸로 쓰지 않도록 주의하세요. 저는 D 드라이브에 PHP를 설치했기 때문입니다. #🎜🎜#rrreee#🎜🎜#4 max_execution_time = 30을 찾아 숫자 30300 또는 1200으로 변경하세요. 코드> 코드>. 이 기능은 각 스크립트가 실행되는 최대 시간입니다. 기본값은 30초입니다. 이는 네트워크 속도 및 서버 주소(예: 외부 호스트)로 인해 연결이 항상 시간 초과될 수 있는 문제를 해결합니다. #🎜🎜##🎜🎜#5. ; cgi.force_redirect = 1을 검색하고 앞에 있는 세미콜론을 제거하고 숫자 10<으로 변경합니다. /코드>. <code>cgi.force_redirect = 0은 PHP 파일 실행을 위한 리디렉션을 끄는 것을 의미합니다. 보안상의 이유로 다른 사람이 실행을 위해 트로이 목마를 업로드하는 것을 방지합니다. 예: 귀하의 웹사이트 URL/as=귀하의 웹사이트 url /sdf/muma.php, 이러한 리디렉션된 PHP 파일은 실행 가능합니다. 이 구성을 0으로 변경하면 이러한 유형의 리디렉션된 PHP 파일이 실행되지 않습니다. #🎜🎜##🎜🎜#이 수정 ​​후 일부 웹사이트가 항상 멈추는 이유이기도 합니다. 웹사이트 프런트 데스크에 보안 취약점이 있고 등산객이 트로이목마 파일을 업로드해도 트로이목마가 발생합니다. 파일은 이런 식으로 실행되지 않습니다. 따라서 쓸모가 없습니다. #🎜🎜##🎜🎜#6. 코드 ; cgi.fix_pathinfo=1를 찾아 세미콜론을 제거하고 숫자 10</code로 변경하세요. > . <code>/a.jpg/1.php와 같은 이미지 아래의 PHP 파일을 파싱하는 것을 금지하는 기능입니다. 0으로 설정하면 실행이 불가능합니다. 이미지로 위장한 트로이목마를 업로드하는 이런 파일은 예전부터 존재해왔고, 트로이목마를 업로드하더라도 실행이 불가능하기 때문에 무용지물이다. #🎜🎜##🎜🎜#7. fastcgi.impersonate = 1 코드를 찾아 앞의 세미콜론을 제거하세요. 해당 기능은 iis 또는 nginxfastcgi 메서드를 사용하여 php 파일을 구문 분석하는 기능이 켜져 있지 않으면 php 프로그램을 실행할 수 없다는 것입니다. . Apache를 켤 필요가 없습니다. #🎜🎜##🎜🎜#8. cgi.rfc2616_headers = 0을 검색하고 세미콜론을 제거하고 01로 변경합니다. 이는 PHP에 어떤 헤더를 사용할지 알려주는 것을 의미합니다. 헤더란 무엇입니까? 예: HTTP/1.1. #🎜🎜##🎜🎜#9. upload_tmp_dir =를 검색하고 앞의 세미콜론을 삭제한 후 다음과 같이 경로를 추가합니다. #🎜🎜#rrreee#🎜🎜#은 파일 업로드를 위한 임시 디렉터리를 의미합니다. 임시 가상 디렉터리를 사용하여 웹 사이트에서 업로드한 파일을 저장하지만 실제로는 파일이 업로드되지 않습니다. #🎜🎜##🎜🎜#10. 다음 코드를 한 줄에 하나씩 검색하고 앞에 있는 세미콜론을 제거합니다. (세미콜론은 주석을 의미하므로 적용되지 않으며 다음과 같은 경우에는 적용됩니다. 제거됨): #🎜🎜#rrreee#🎜🎜 #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视频教程://m.sbmmt.com/course/list/29/type/2.html    

위 내용은 php.ini 구성에는 웹사이트에 보안 문제를 일으킬 수 있는 3가지 부적절한 설정이 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:百家号:陆柏熺
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿