백엔드 개발 PHP 튜토리얼 Linux服务器,PHP的10大安全配置实践

Linux服务器,PHP的10大安全配置实践

Jun 23, 2016 pm 01:41 PM

PHP被广泛用于各种Web开发。而当服务器端脚本配置错误时会出现各种问题。现今,大部分Web服务器是基于Linux环境下运行(比如:Ubuntu,Debian等)。本文例举了十大PHP最佳安全实践方式,能够让您轻松、安全配置PHP。

PHP安全性设置提示:

DocumentRoot: /var/www/
Default Web server: Apache
Default PHP configuration file: /etc/php.ini
Default PHP extensions config directory: /etc/php.d/
Our sample php security config file: /etc/php.d/security.ini (you need to create this file using a text editor)
Operating systems: Ubuntu (the instructions should work with any other Linux distributions such as RHEL / CentOS / Fedora or other Unix like operating systems such as OpenBSD/FreeBSD/HP-UX).

1. 减少PHP内置模块

为了增强性能和安全性,强烈建议,减少PHP中的模块。来看看下面这个被执行命令安装的模块。

1    # php ?m
로그인 후 복사

你将会得到类似的结果:

你将会得到类似的结果:

[PHP Modules]
apc
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
memcache
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
suhosin
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]
Suhosin


删除一个模块,并执行此命令。例如:删除模块sqlite3

1    # rm /etc/php.d/sqlite3.ini
로그인 후 복사

或者

1    # mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disableRestrict
로그인 후 복사

2. 使PHP信息泄露最小化

在默认PHP时在HTTP抬头处会生成一条线介于每个响应中,(比如X-Powered-By: PHP/5.2.10)。而这个在系统信息中为攻击者创建了一个非常有价值的信息。

HTTP示例:

1    HTTP/1.1 200 OK2    X-Powered-By: PHP/5.2.103    Content-type: text/html; charset=UTF-84    Vary: Accept-Encoding, Cookie5    X-Vary-Options: Accept-Encoding;list-contains=gzip,Cookie;string-contains=wikiToken;6    string-contains=wikiLoggedOut;string-contains=wiki_session7    Last-Modified: Thu, 03 Nov 2011 22:32:55 GMT8    ...
로그인 후 복사

因此,我们强烈建议,禁止PHP信息泄露,想要要禁止它,我们要编辑/etc/php.d/secutity.ini,并设置以下指令:

1    expose_php=Off
로그인 후 복사

3. 使PHP加载模块最小化

在默认情况下,RHEL加载的所有模块可以在/etc/php.d/目录中找到。要禁用或启用一个特定的模块,只需要在配置文件/etc /php.d/目录中中注释下模块名称。而为了优化PHP性能和安全性,当你的应用程序需要时,我们强烈建议建议启用扩展功能。举个例子:当禁用GD扩展 时,键入以下命令:

1    # cd /etc/php.d/2    # mv gd.{ini,disable}3    # /etc/init.d/apache2 restart
로그인 후 복사

为了扩展PGP GD模块,然后键入以下命令:

1    # mv gd.{disable,ini}2    # /sbin/service httpd restart
로그인 후 복사

4. 记录PHP错误信息

为了提高系统和Web应用程序的安全,PHP错误信息不能被暴露出。要做到这一点,需要编辑/etc/php.d/security.ini 文件,并设置以下指令:

1    display_errors=Off
로그인 후 복사

为了便于开发者Bug修复,所有PHP的错误信息都应该记录在日志中。

1    log_errors=On2    error_log=/var/log/httpd/php_scripts_error.log
로그인 후 복사

5. 禁用远程执行代码

如果远程执行代码,允许PHP代码从远程检索数据功能,如FTP或Web通过PHP来执行构建功能。比如:file_get_contents()。

很多程序员使用这些功能,从远程通过FTP或是HTTP协议而获得数据。然而,此法在基于PHP应用程序中会造成一个很大的漏洞。由于大部分程序员 在传递用户提供的数据时没有做到适当的过滤功能,打开安全漏洞并且创建了代码时注入了漏洞。要解决此问题,需要禁用_url_fopen in /etc/php.d/security.ini,并设置以下命令:

1    allow_url_fopen=Off
로그인 후 복사

除了这个,我还建议禁用_url_include以提高系统的安全性。

1    allow_url_include=Off
로그인 후 복사

6. 禁用PHP中的危险函数

PHP中有很多危险的内置功能,如果使用不当,它可能使你的系统崩溃。你可以创建一个PHP内置功能列表通过编辑/etc/php.d/security.ini来禁用它。

1    disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
로그인 후 복사

7. 资源控制

为了提高系统的稳定性,强烈建议设置每个脚本解析请求数据所花费的时间和脚本可能消耗的最大内存量。正确的配置这些参数可以防止PHP任何脚本消耗太多的资源或是内存,从而避免系统不安全或降低安全系数。

1    # set in seconds2    max_execution_time = 303    max_input_time = 304    memory_limit = 40M
로그인 후 복사

8. 限制PHP访问文件系统

该open_basedir指令指定的目录是允许PHP访问使用fopen()等功能。如果任何脚本试图访问超出open_basdir定义的路径文件,PHP将拒绝打开。值得注意的是,你不能使用一个符号链接作为一种变通方法。

1    ; Limits the PHP process from accessing files outside2    ; of specifically designated directories such as /var/www/html/3    open_basedir="/var/www/html/"4    ; ------------------------------------5    ; Multiple dirs example6    ; open_basedir="/home/httpd/vhost/cyberciti.biz/html/:/home/httpd/vhost/nixcraft.com/html/:/home/httpd/vhost/theos.in/html/"7    ; ------------------------------------
로그인 후 복사

9.限制文件/目录访问

进行适当的安全设置:确保Apache作为非root用户运行,比如www-data或www。对于文件和目录在基于/var/www/下同样属于非root用户。想要更改所有者,执行以下命令:

1    # chown -R apache:apache /var/www/
로그인 후 복사

10.编译保护Apache,PHP和MySQL的配置文件

使用charrt命令编译保护配置文件

1    # chattr +i /etc/php.ini2    # chattr +i /etc/php.d/*3    # chattr +i /etc/my.ini4    # chattr +i /etc/httpd/conf/httpd.conf5    # chattr +i /etc/
로그인 후 복사

使用charrt命令可以编译保护PHP文件或者是文件中的/var/www/html的目录:

1    # chattr +i /var/www/html/file1.php2    # chattr +i /var/www/html/
로그인 후 복사

 

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 스크립트를 사용하여 Linux 서버에서 서버 간 파일 전송을 구현하는 방법 PHP 스크립트를 사용하여 Linux 서버에서 서버 간 파일 전송을 구현하는 방법 Oct 05, 2023 am 09:06 AM

제목: 서버 간 파일 전송의 PHP 스크립트 구현 1. 소개 서버 간 파일 전송에서는 일반적으로 한 서버에서 다른 서버로 파일을 전송해야 합니다. 이 기사에서는 PHP 스크립트를 사용하여 Linux 서버에서 서버 간 파일 전송을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 2. 준비 PHP 스크립트 작성을 시작하기 전에 서버에 다음 환경이 구성되어 있는지 확인해야 합니다. PHP 설치: Linux 서버에 PHP를 설치하고 PHP 버전이 코드 요구 사항을 충족하는지 확인합니다.

Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포하는 방법은 무엇입니까? Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포하는 방법은 무엇입니까? Sep 09, 2023 pm 03:27 PM

Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포하는 방법은 무엇입니까? 소개: 오늘날 정보가 폭발적으로 증가하는 시대에 웹 애플리케이션은 사람들이 정보를 얻고 통신하는 주요 방법 중 하나가 되었습니다. 사용자 개인 정보 보호와 정보 ​​신뢰성을 보장하려면 Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포해야 합니다. 이 문서에서는 Linux 환경에서 웹 인터페이스를 배포하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. Linux 서버를 설치하고 구성하려면 먼저 Li를 준비해야 합니다.

Linux 서버 보안: 명령을 사용하여 시스템 취약점 확인 Linux 서버 보안: 명령을 사용하여 시스템 취약점 확인 Sep 08, 2023 pm 03:39 PM

Linux 서버 보안: 명령을 사용하여 시스템 취약점 확인 개요: 오늘날의 디지털 환경에서 서버 보안은 매우 중요합니다. 알려진 취약점을 적시에 감지하고 복구하면 잠재적인 공격 위협으로부터 서버를 효과적으로 보호할 수 있습니다. 이 문서에서는 Linux 서버의 시스템 취약성을 확인하는 데 사용할 수 있는 일반적으로 사용되는 명령을 소개하고 관련 코드 예제를 제공합니다. 이러한 명령을 올바르게 사용하면 서버의 보안을 강화할 수 있습니다. 시스템 업데이트 확인: 취약점 확인을 시작하기 전에 시스템에 업데이트가 있는지 확인하세요.

Linux 서버의 성능과 리소스 활용도를 최적화하는 방법 Linux 서버의 성능과 리소스 활용도를 최적화하는 방법 Nov 07, 2023 pm 02:27 PM

Linux 서버의 성능과 리소스 활용도를 최적화하려면 구체적인 코드 예제가 필요합니다. 요약: Linux 서버 성능과 리소스 활용도를 최적화하는 것은 안정적이고 효율적인 서버 운영을 보장하는 핵심입니다. 이 기사에서는 Linux 서버 성능 및 리소스 활용도를 최적화하는 몇 가지 방법을 소개하고 구체적인 코드 예제를 제공합니다. 소개: 인터넷의 급속한 발전으로 인해 수많은 애플리케이션과 서비스가 Linux 서버에 배포되었습니다. 서버의 효율적이고 안정적인 운영을 보장하기 위해서는 서버의 성능과 리소스 활용도를 최적화해야 합니다.

Linux 서버 오류 및 보안: 시스템을 건강하게 관리하는 방법 Linux 서버 오류 및 보안: 시스템을 건강하게 관리하는 방법 Sep 10, 2023 pm 04:02 PM

인터넷 기술이 발전함에 따라 점점 더 많은 기업과 개인이 Linux 서버를 사용하여 애플리케이션과 웹사이트를 호스팅하고 관리하는 것을 선택하고 있습니다. 그러나 서버 수가 늘어나면서 서버 장애 및 보안 문제가 시급한 과제가 되고 있다. 이 기사에서는 Linux 서버 오류의 원인과 시스템을 건강하게 관리하고 보호하는 방법을 살펴봅니다. 먼저 Linux 서버의 오작동을 일으킬 수 있는 몇 가지 일반적인 이유를 살펴보겠습니다. 첫째, 하드웨어 오류는 가장 일반적인 이유 중 하나입니다. 예를 들어, 서버가 과열되었습니다.

더욱 강력한 웹 인터페이스 보안 제공: Linux 서버를 위한 주요 사례. 더욱 강력한 웹 인터페이스 보안 제공: Linux 서버를 위한 주요 사례. Sep 08, 2023 pm 12:51 PM

더욱 강력한 웹 인터페이스 보안 제공: Linux 서버의 주요 사례 웹 인터페이스 보안은 오늘날 디지털 시대에 점점 더 중요해지고 있습니다. 점점 더 많은 애플리케이션과 서비스가 클라우드로 이동함에 따라 서버 보안 보호가 점점 더 중요한 문제가 되고 있습니다. 가장 일반적으로 사용되는 서버 운영 체제 중 하나인 Linux의 보안 보호는 매우 중요합니다. 이 문서에서는 더 강력한 웹 인터페이스 보안을 제공하는 데 도움이 되는 몇 가지 주요 사례를 소개합니다. 운영 체제 및 소프트웨어 업데이트 및 유지 관리 운영 체제 및 소프트웨어의 적시 업데이트는 서비스입니다.

Linux 서버 보안 강화: 시스템 구성 및 최적화 Linux 서버 보안 강화: 시스템 구성 및 최적화 Sep 08, 2023 pm 03:19 PM

Linux 서버 보안 강화: 시스템 구성 및 최적화 소개: 오늘날 정보 보안 위협이 증가하는 환경에서는 악의적인 공격과 무단 액세스로부터 Linux 서버를 보호하는 것이 중요해졌습니다. 시스템 보안을 강화하려면 서버와 서버에 저장된 민감한 데이터를 보호하기 위한 일련의 보안 조치를 취해야 합니다. 이 문서에서는 Linux 서버의 보안을 향상하기 위한 몇 가지 주요 구성 및 최적화 단계를 다룹니다. 1. 소프트웨어 패키지를 업데이트하고 관리하려면 최신 소프트웨어 패키지와 업데이트를 설치하는 것이 시스템 유지에 필수적입니다.

Linux 서버 방어: 악성 파일 업로드 공격으로부터 웹 인터페이스를 보호합니다. Linux 서버 방어: 악성 파일 업로드 공격으로부터 웹 인터페이스를 보호합니다. Sep 09, 2023 am 09:06 AM

Linux 서버 방어: 악성 파일 업로드 공격으로부터 웹 인터페이스 보호 최근 몇 년간 인터넷의 대중화와 발전으로 웹 애플리케이션의 사용이 점점 더 널리 보급되었습니다. 그러나 이와 함께 다양한 보안 위협이 발생하며 그 중 하나는 악성 파일 업로드 공격입니다. 악성 파일 업로드 공격은 공격자가 서버 권한을 얻거나 악성 콘텐츠를 유포하기 위해 악성 코드가 포함된 파일을 서버에 업로드하는 것을 의미합니다. 악성 파일 업로드 공격으로부터 웹 인터페이스를 보호하기 위해 몇 가지 효과적인 방어 조치를 취할 수 있습니다. 아래에서 소개하겠습니다

See all articles