it-swarm-korea.com

안전하지 않은 / 위험한 기능 비활성화 PHP 기능

일반적으로 직업 설명은 웹 응용 프로그램의 코드 검토로 제한됩니다. 보다 최근에는 서버 측 PHP 최적화를 지원하라는 요청을 받았지만 여기서는 익숙하지만 경험이 부족합니다.

다음과 같은 구성 설정을 보았습니다.

disable_functions

이 설정을 사용하여 알아야 할 의미가 있습니까 (명백한 기능 x()이 비활성화되고 x() 기능을 사용하는 응용 프로그램은 작동하지 않음)?

그것이 내가 활용해야 할 것이면 위험 할 수있는 많은 기능 목록을 생각해 낼 수 있지만 일부는 관계없이 필요할 수 있습니다. 누구든지 목록을 가지고 있거나 어떤 기능을 비활성화 해야하는지, 왜 내가 누락/간과하는 경우 추가해야 할 제안이 있습니까?

안전하지 않은 많은 기능을 알고 있지만 서버 구성 경험이 부족한 것으로 통찰력을 얻을 수 있습니다.

EDIT :이 주제가 켜져 있는지 아닌지에 대한 질문을 해결하기 위해 PHP 환경 최적화를 도와 달라는 요청을 받았습니다. 보안이지만 위에서 언급 한 구성 설정에 대해 구체적으로 묻습니다. :)

16
Purge

여기에 이해해야 할 많은 것들이 있습니다 :

  1. 위험한 PHP 기능 목록은 다음과 같습니다 : http://php.net/manual . 거의 모든 PHP 기능 strlen 등은 아마도 안전하지만 외부 세계와 대화하는 기능은 나머지 코드가 안전하지 않으면 놀라 울 수 있습니다.
  2. 사이트를 보호하려면 코드 전체에 보안이 있어야하며 여기에서 일부 기능을 비활성화하면 작동하지 않으며 눈을 멀게하고 부주의 한 코딩으로 이어질 수 있습니다.
  3. 보다 안전한 코드를 작성하는 데 PHP assist 기능이 있지만 안전하지 않은 코드에서 안전한 코드를 만들지는 않습니다. 예를 들어 open_basedirallow_url_fopen 을 찾으십시오.
  4. 당신이 사용할 수있는 disable_functions 위험한 것으로 간주되는 일부 조치는 금지하지만 특정 방식의 조치 만 금지 할 수 있습니다. 예를 들어 exec,Shell_exec,popen,passthru,proc_open,system,pcntl_exec 그리고 이것은 아마도 코드에서 외부 프로그램을 실행하지 못하게 할 것입니다. 그러나이 프로그램이 수행하는 대부분의 작업은 PHP 또한 의미합니다. "파일 작성과 같은 것을 피하려고합니다. "아마도 작동하지 않을 것입니다. PHP가 아닌 OS 권한을 통해해야합니다. 따라서 먼저 금지하고 싶은 것이 무엇인지 정의한 다음 가능한지 확인하십시오. 명심하면서 불가능할 수도 있습니다.
  5. PHP 매뉴얼에서 보안 장 을 읽으십시오. PHP 보안 책 을 읽으십시오. 보안 설정은 security=Onphp.ini, 불행히도.
17
StasM

이것에 대해 걱정해야 할 유일한 문제는 실제로 필요한 기능을 비활성화하는 것입니다. 기능을 비활성화하면 남용을 확실히 예방할 수 있습니다. exec, Shell_exec 등과 같은 공유 호스팅 환경에서는 거의 사용되지 않는 기능이 있습니다.

그러나이 기능에 의존하기보다는 일반적인 보안 작업을 고려해야합니다. 예를 들어 suPHP 또는 이와 유사한 기능을 사용하는 경우 전체 공격을 방지하고 보안을 좀 더 쉽게 만들 수 있습니다. 기능 비활성화는 마지막으로 걱정해야하며, 걱정하기 전에 서버가 안전해야합니다.

4
devicenull

웹 사이트 또는 웹 서버를 호스팅하는 경우 PHP 스크립트를 사용하여 웹 사이트 또는 웹 서버를 악용하는 데 사용할 수있는 PHP 이 위험한 기능을 사용하면 해커가 루트 수준까지 웹 서버를 완벽하게 제어 할 수 있습니다.

PHP 개발에서 위험한 함수 목록

"Apache_child_terminate, Apache_setenv, define_syslog_variables, escapeshellarg,에는 escapeshellcmd, 평가, 간부, FP, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code,은 mysql_pconnect, openlog, 경유 , php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode,는 popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_Nice, proc_open, proc_terminate, Shell_exec, 시스템 로그 시스템, xmlrpc_entity_decode "

PHP에서 위험한 기능을 비활성화하는 방법

  1. "php.ini" 파일.
  2. 그런 다음 disable_functions=
  3. 그런 다음 위의 모든 기능을 disable_functions에 추가하십시오.

    disable_functions = "eval, system"

^^ 여기서 2 개의 기능 만 비활성화했습니다. disable_functions = "기능 목록을 비활성화하려면 쉼표로 구분하여 기능 목록을 제공하여 여러 기능을 비활성화 할 수 있습니다"

위의 각 기능이 정확히 무엇을 의미하는지 보려면 위의 기능을 검색하십시오

http://in2.php.net/manual/en/function.system.php

3
mr_eclair

[~ # ~] not [~ # ~] disable_functions를 보안 기능으로 고려하십시오.

Stackoverflow에 대한 다른 질문에 내 이전 답변 참조-짝수 PHP disable_functions 및 실제 보안 기능과 유사합니다.

2
lukash

PHP에는 본질적으로 위험한 기능이 없습니다. OTOH PHP의 핵심 기능을 사용하여 매우 안전하지 않은 프로그램을 작성하는 것은 매우 쉽습니다. IMHO, 'disable_function'은 시스템을 제대로 보호 할 수없는 사람들을위한 위약입니다.

시스템 관리자로서 서버 보안을 위해해야 ​​할 일이 많이 있습니다. 가능한 경우 open_basedir 설정, 강력한 권한 모델 시행, 문서 루트 외부에 포함 경로 유지 (또는 직접 사용) 해당 디렉토리에서 HTTP 액세스가 비활성화되었습니다).

서버 측 PHP 최적화를 도와 달라는 요청을 받았습니다.

여기서 최적화 또는 보안에 대해 이야기하고 있습니까?

1
symcbean

2019 년 현재 개발을 시작할 때 화이트리스트를 작성하는 것에 반대하는 스타트 업과 협력했지만 블랙리스트를 원했습니다. AWS SDK의 파일 시스템 및 cURL 라이브러리에 액세스해야하지만 사용자 지정 HTTP 호출을 사용하고 있으므로 소켓 스트림을 사용하여 SDK에 의존 할 수 없습니다.

중요한 것은 이것이 시스템을 보호하는 데 사용되는 유일한 기술과는 거리가 멀었습니다. 그러나 다양한 익스플로잇/셸에서 종종 사용되는 스크립트와 기술이 있으므로 누군가가 할 수 없어서는 안되는 것을 편집하고 추가 피해를 제한하려는 시나리오에서 내가 사용한 목록은 다음과 같습니다. :

disable_functions = Apache_child_terminate,Apache_setenv,chgrp,chmod,chown,curl_multi_exec,define_syslog_variables,eval,exec,highlight_file,openlog,parse_ini_file,parse_ini_string,passthru,php_uname,popen,posix_kill,posix_setpgid,posix_setsid,posix_setuid,proc_open,Shell_exec,show_source,syslog,system

0
LTPCGO

나는 몇 년 동안 PHP를 만지지 않았지만, 내가 읽은 것부터

disable_functions

공유 호스팅 상황에 가장 적합합니다.

0
Steve