PHP는 가장 널리 사용되는 스크립팅 프로그래밍 언어 중 하나입니다. 시장 점유율은 지배적인 위치에 대해 많은 것을 말해줍니다. PHP 7이 출시되었다는 사실은 이 프로그래밍 언어를 현재 개발자에게 더욱 매력적으로 만듭니다. 몇 가지 변화에도 불구하고 많은 개발자들은 PHP의 미래에 대해 회의적입니다. 한 가지 이유는 PHP의 보안입니다.
PHP의 보안은 개발자의 주요 관심사입니다. PHP는 내부적으로 견고한 보안을 제공하지만 이러한 보안 메커니즘을 올바르게 구현하는 것은 개발자의 몫입니다. 이 기사에서는 Linux 관리자를 위한 몇 가지 PHP 보안 포인트를 소개합니다. 이러한 사항은 웹 애플리케이션을 보호하고 장기적으로 적절한 기능을 보장하는 데 도움이 됩니다.
시작하기 전에 우리가 다루고 있는 시스템을 이해하는 것이 필요합니다. 데모 목적으로 Fedora를 사용합니다. 그러나 이러한 사항은 Ubuntu 버전 또는 기타 Linux 배포판에 적용되어야 합니다. 자세한 내용은 운영 체제 배포 설명서를 확인하세요.
시스템 환경의 몇 가지 주요 파일을 자세히 살펴보겠습니다. 파일은 다음과 유사하거나 일치해야 합니다.
기본 웹 서버: Apache
DocumentRoot: /var/www/html
PHP 구성 파일: /etc/php.ini
확장 구성 디렉터리: /etc/php.d/
보안 파일: /etc/php.d/security.ini
이 팁은 SQL 주입, XSS, 사이트 간 요청 위조, eval() 및 파일 업로드 공격과 같은 다양한 유형의 일반적인 공격으로부터 웹사이트를 보호합니다. 일반적인 공격 목록은 여기(https://www.sitepoint.com/top-10-php-security-vulnerability/)에서 확인할 수 있습니다.
1. 불필요한 모듈을 삭제합니다.
PHP에는 PHP 모듈이 내장되어 있습니다. 많은 작업에 유용하지만 모든 프로젝트에 필요한 것은 아닙니다. 사용 가능한 PHP 모듈을 보려면 다음 명령을 입력하세요:
# php - m
목록을 검토한 후에는 이제 불필요한 모듈을 제거할 수 있습니다. 모듈 수를 줄이면 작업 중인 웹 애플리케이션의 성능과 보안을 향상시키는 데 도움이 됩니다.
2. PHP 정보 유출을 제한하세요.
플랫폼에서 중요한 정보가 유출되는 것은 흔한 일입니다. 예를 들어 PHP는 버전, 서버에 설치되었다는 사실 등의 정보를 유출합니다. 이는 hide_php 명령을 통해 달성할 수 있습니다. 누출을 방지하려면 /etc/php.d/security.ini에서 이 명령을 off로 설정해야 합니다.
아아아아버전과 상태를 알아야 할 경우 웹 사이트 주소에 대해 간단한 Curl 명령을 실행하면 해당 정보를 얻을 수 있습니다.
아아아아이전 명령은 다음 정보를 반환했을 것입니다:
expose_php=Off
3. 원격 코드 실행을 비활성화합니다.
원격 코드 실행은 PHP 보안 시스템의 일반적인 보안 취약점 중 하나입니다. 기본적으로 시스템에서는 원격 코드 실행이 활성화되어 있습니다. "allow_url_fopen" 명령을 사용하면 require, include 또는 URL 인식 fopen 래퍼와 같은 기능이 PHP 파일에 직접 액세스할 수 있습니다. 원격 액세스는 HTTP 또는 FTP 프로토콜을 사용하여 이루어지며, 이로 인해 시스템이 코드 주입 보안 취약점을 방어할 수 없게 됩니다.
시스템이 안전하고 원격 코드 실행으로부터 멀리 떨어져 있는지 확인하려면 아래와 같이 이 명령을 "끄기"로 설정할 수 있습니다.
Curl - I http://www.livecoding.tv/index.php
4. PHP 오류를 기록합니다.
웹 애플리케이션의 보안을 강화하는 또 다른 간단한 방법은 방문자에게 오류를 표시하지 않는 것입니다. 이렇게 하면 해커가 웹사이트의 보안을 전혀 침해할 수 없게 됩니다. /etc/php.d/security.ini 파일에서 편집해야 합니다.
아아아아이제 다음과 같은 생각이 들 수 있습니다. 이 단계를 완료한 후 "개발자가 오류 메시지의 도움 없이 어떻게 디버깅할 수 있습니까?" 개발자는 디버깅을 위해 log_errors 명령을 사용할 수 있습니다. security.ini 파일에서 log_errors 명령을 "On"으로 설정하기만 하면 됩니다.
아아아아5. 자원을 합리적으로 관리합니다.
애플리케이션의 보안을 보장하려면 리소스를 제어하는 것이 중요합니다. 적절한 실행과 보안을 보장하려면 PHP 스크립트 실행을 제한해야 합니다. 또한 요청 데이터를 구문 분석하는 데 소요되는 시간에도 제한이 있어야 합니다. 실행 시간을 제어하는 경우 스크립트에서 사용하는 메모리와 같은 다른 리소스도 이에 맞게 구성해야 합니다. 이러한 모든 지표는 security.ini 파일을 편집하여 관리할 수 있습니다.
아아아아6. 위험한 PHP 기능 비활성화
PHP에는 개발에 유용한 기능이 포함되어 있지만 해커가 웹 애플리케이션에 침입하는 데 사용할 수 있는 많은 기능도 포함되어 있습니다. 이러한 기능을 비활성화하면 전반적인 보안이 향상되고 위험한 PHP 기능에 노출되지 않습니다.
이렇게 하려면 먼저 php.ini 파일을 편집해야 합니다. 파일 내부에서 비활성화_functions 명령을 찾아 내부의 위험한 기능을 비활성화하십시오. 이렇게 하려면 다음 코드를 복사하여 붙여넣으면 됩니다.
아아아아여기(http://www.php.cn/)에서 위험한 PHP 기능을 비활성화하는 방법에 대해 자세히 알아볼 수 있습니다.
7. 파일을 업로드합니다.
如果你的应用程序不需要上传任何文件,禁用上传文件的功能有助于提高安全。想禁止用户上传文件,只需要编辑/etc/php.d/目录下的security.ini文件,将file_uploads命令设成OFF。
file_uploads=Off
8. 保持版本最新。
开发人员在24/7不间断地工作,给你使用的技术打上补丁。PHP也是一样。由于它有一个开源社区,补丁和修正版定期发布。更新版还为首日漏洞及其他安全漏洞提供了安全补丁。如果你注重应用程序的安全性,就要始终确保你的PHP解决方案是最新版本。另外,给其他相关技术打上最新的补丁可以确保最大限度的安全。
9.控制文件系统访问。
默认情况下,PHP可使用fopen()等函数来访问文件。open_basedir命令提供了访问。首先,始终要将open_basedir命令设成/var/www/html目录。将它设成其他任何目录会导致安全问题。
open_basedir="/var/www/html/"
10. 控制POST大小。
我们的最后一个PHP安全要点是控制POST大小函数。HTTP POST函数使用客户端的浏览器,将数据发送到Web服务器。比如说,用户可能上传证书,然后发送到Web浏览器以便处理。一切都运行顺畅,直到有一天黑客企图发送庞大的文件来耗尽服务器资源。这很可能会导致服务器崩溃或响应缓慢。为了保护服务器远离这个漏洞,就需要设置POST大小。POST大小可以在/etc/php.d/security.ini文件里面加以设置。
post_max_size=1k
结束语
安全是广大Web开发人员和Linux管理员最关注的问题之一。如果采取了上述要点,你势必可以加强开发环境和PHP Web应用程序方面的安全。要是你认为我们遗漏了重要的内容,欢迎留言补充。
以上就是详细介绍Linux管理员不可不知十大PHP安全要点的详情的内容,更多相关内容请关注PHP中文网(www.php.cn)!