>웹 프론트엔드 >JS 튜토리얼 >PHP 보안 향상: 수정해야 하는 8가지 PHP 기본 구성_javascript 기술

PHP 보안 향상: 수정해야 하는 8가지 PHP 기본 구성_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:31:161782검색

분명히 PHP Mysql Apache는 매우 인기 있는 웹 기술입니다. 이 조합은 강력하고 확장 가능하며 무료입니다. 그러나 PHP의 기본 설정은 이미 온라인 웹사이트에 적합하지 않습니다. 기본 구성 파일을 수정하여 PHP의 보안 정책을 강화해보자!

0x01: 원격 URL 파일 처리 기능 비활성화

fopen과 같은 파일 처리 함수는 파일의 rul 매개변수(예: fopen('http://www.yoursite.com','r'))를 허용합니다. 이 함수는 원격 리소스에 쉽게 액세스할 수 있습니다. 그러나 이는 매우 중요한 보안 위협이므로 파일 기능을 제한하려면 이 기능을 비활성화하는 것이 좋습니다.

코드 복사 코드는 다음과 같습니다.

allowed_url_fopen = 꺼짐

0x02: 전역 변수 등록 비활성화

4.2.0 이전 버전에서는 PHP가 전역 변수를 입력으로 사용합니다. 이 함수는 Register_globals라고 합니다. 다행히도 이 기능을 사용하면 공격자가 전역 변수를 쉽게 조작할 수 있기 때문에 웹 애플리케이션에 많은 보안 문제가 발생합니다. 4.2.0에서는 기본적으로 비활성화되어 있으므로 매우 위험하므로 어떤 상황에서도 비활성화해야 합니다. 일부 스크립트에 이 기능이 필요한 경우 해당 스크립트에는 잠재적인 보안 위협이 있습니다. 이 기능을 비활성화하려면 pnp.ini를 수정하세요.

코드 복사 코드는 다음과 같습니다.

Register_globals = 꺼짐

0x03: PHP 읽기 및 쓰기 작업 제한

많은 웹 개발 프로세스에서 PHP 스크립트는 /var/www/htdocs/files와 같은 로컬 파일 시스템을 읽고 써야 합니다. 보안을 강화하려면 로컬 파일의 읽기 및 쓰기 권한을 수정할 수 있습니다. :

코드 복사 코드는 다음과 같습니다.

open_basedir = /var/www/htdocs/files

0x04: 포즈 제한

PHP의 실행 시간, 메모리 사용량, 게시 및 업로드 데이터를 제한하는 것이 최선의 전략입니다.

코드 복사 코드는 다음과 같습니다.

max_execution_time = 30 ; 최대 스크립트 실행 시간
max_input_time = 60 ; 입력을 구문 분석하는 데 소요된 최대 시간
memory_limit = 16M ; 하나의 스크립트가 사용하는 최대 메모리
upload_max_filesize = 2M ; 최대 업로드 파일 크기
post_max_size = 8M 최대 게시물 크기

0x05: 오류 메시지 비활성화 및 로깅 활성화

기본 설정에서 PHP는 애플리케이션 개발 과정에서 브라우저에 오류 메시지를 출력합니다. 이 기본 설정은 가장 합리적인 구성이지만 다음과 같은 일부 보안 정보가 사용자에게 유출될 수도 있습니다. 설치 경로와 사용자 이름. 이미 개발된 웹사이트에서는 오류 메시지를 비활성화하고 오류 메시지를 로그 파일에 출력하는 것이 가장 좋습니다.

코드 복사 코드는 다음과 같습니다.

display_errors = 꺼짐
log_errors = 켜짐

0x06: PHP 파일 숨기기

숨겨진 PHP 파일이 없으면 다음과 같은 다양한 방법을 통해 서버 PHP 버전을 얻을 수 있습니다. http://www.example.com/script.php?=PHPB8B5F2A0-3C92-11d3- A3A9- 4C7B08C10000

분명히 우리는 사용자가 웹사이트 서버의 PHP 버전을 직접 얻는 것을 원하지 않습니다. 다행히 php.ini에는 이 기능을 비활성화하는 스위치가 있습니다.

코드 복사 코드는 다음과 같습니다.

노출_php = 꺼짐

0x07: 안전 모드 구성

기본적으로 PHP는 안전 모드에서 구성할 수 있습니다. 이 모드에서는 Apache가 파일, 환경 변수 및 바이너리 프로그램에 대한 액세스를 금지합니다. 안전 모드에서 가장 큰 문제는 파일 소유자만 액세스할 수 있다는 것입니다. PHP 파일. 이 프로그램을 개발하기 위해 많은 개발자가 함께 작업하는 경우 이 설정은 실용적이지 않습니다. PHP 파일에 액세스해야 하는 경우 다른 프로그램이 이러한 PHP에 액세스할 수 없다는 점입니다. 파일의 경우 다음 구성을 사용하면 단일 사용자 대신 사용자 그룹에 대한 파일 권한을 수정할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

safe_mode = 꺼짐
safe_mode_gid = 켜짐

safe_mode_gid를 활성화하면 Apache를 사용하는 이 그룹이 PHP 파일에 액세스할 수 있습니다. 안전 모드는 바이너리 실행을 방지하는 데에도 매우 효과적이지만 개발자는 특정 상황에서 일부 바이너리를 실행할 수 있기를 원할 수 있습니다. 이러한 특별한 경우에는 바이너리 파일을 (/var/www/binaries)와 같은 디렉터리에 배치하고 다음 설정을 지정할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

safe_mode_exec_dir = /var/www/binaries

마지막으로 다음 설정을 통해 서버의 환경 변수에 접근할 수 있으며, 접두사를 "_"로 구분하여 제공하면 지정된 접두사가 있는 환경 변수에만 접근할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

safe_mode_allowed_env_vars = PHP_

0x08: 특정 접미사가 붙은 파일에 대한 일반 사용자 액세스 제한

보안상의 이유로 특정 접미사 이름을 가진 많은 파일(예: mysql 연결 정보와 같은 일부 민감한 정보가 포함된 .inc 접미사가 있는 파일)에 일반 사용자가 액세스할 수 없습니다. 모든 사용자는 이 구성 파일에 액세스할 수 있습니다. 웹사이트의 보안을 강화하려면 ..htaccess 파일에서 다음을 구성해야 합니다.

코드 복사 코드는 다음과 같습니다.

<파일 일치>
주문 허용, 거부
모두 거부

0x09: 요약

PHP의 기본 구성은 개발자용입니다. 다수의 사용자를 대상으로 하는 웹사이트라면 PHP를 재구성하는 것이 좋습니다.

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