이 글의 내용은 PHP 환경에서 보안을 더욱 강화하는 방법에 관한 것입니다. PHP 환경의 보안을 강화하는 방법을 소개하면 도움이 될 것입니다.
PHP 애플리케이션을 배포한 후 개발자 또는 운영 및 유지 관리 담당자는 항상 PHP 취약점 뉴스에 주의하고 PHP 버전을 업그레이드하며 PHP 환경에 대한 보안 강화를 수행해야 합니다. 이 기사에서는 WEB 보안의 관점에서 웹사이트를 더욱 강력하고 안전하게 만드는 방법을 소개합니다.
1. PHP의 안전 모드 활성화
PHP 환경에서 제공되는 안전 모드는 매우 중요한 내장 보안 메커니즘입니다. PHP 안전 모드는 PHP 환경의 일부 기능(예: system() 함수)을 효과적으로 제어할 수 있습니다. , 대부분의 파일 작업에 유용한 기능은 권한을 제어하는 데 사용되며 특정 키 파일(예: /etc/passwd)에 대한 수정은 허용되지 않습니다. 그러나 기본 php.ini 구성 파일은 안전 모드를 활성화하지 않습니다.
php.ini 구성 파일을 수정하여 PHP 안전 모드를 활성화할 수 있습니다:
safe_mode = on
2. 사용자 그룹 보안
안전 모드를 활성화할 때 safe_mode_gid 옵션이 꺼져 있으면 PHP 스크립트는 동일한 사용자로 파일에 액세스할 수 있습니다. 그룹의 사용자도 파일에 액세스할 수 있습니다.
따라서 이 옵션을 off로 설정하는 것이 좋습니다.
safe_mode_gid = off
참고: 이 옵션 매개변수는 Linux 운영 체제에만 적용됩니다.
이 설정을 지정하지 않으면 서버 웹사이트 디렉터리에 있는 파일이 작동하지 않을 수 있습니다.
3. 안전 모드에서 프로그램 홈 디렉터리 실행
안전 모드를 활성화하고 특정 프로그램을 실행하려는 경우 프로그램을 실행해야 하는 홈 디렉터리를 지정할 수 있습니다. 예:
safe_mode_exec_dir = /usr/bin
일반적으로 그렇지 않은 경우 어떤 프로그램을 실행할 필요가 없나요? 시스템 프로그램이 실행되는 디렉터리를 지정하지 않는 것이 좋습니다. 디렉터리를 지정한 다음 실행해야 하는 프로그램을 이 디렉터리에 복사할 수 있습니다. 예:
safe_mode_exec_dir = /temp/cmd
그러나 어떤 프로그램도 실행하지 않는 것이 좋습니다. 이 경우 실행 디렉터리를 웹 페이지 디렉터리로 지정하기만 하면 됩니다.
safe_mode_exec_dir = /usr/www
참고: 실행 디렉터리 경로는 실제 운영 체제의 디렉터리 경로에 따라 달라집니다.
4. 안전 모드에서 파일 포함
일부 공용 파일을 안전 모드에서 포함해야 하는 경우 다음 옵션만 수정하면 됩니다.
safe_mode_include_dir = /usr/www/include/
일반적으로 PHP 스크립트에 포함된 파일은 프로그램에 이미 작성되어 있으며 특정 요구 사항에 맞게 설정할 수 있습니다.
5. PHP 스크립트가 액세스할 수 있는 디렉터리 제어
open_basedir 옵션을 사용하여 PHP 스크립트가 지정된 디렉터리에만 액세스할 수 있도록 제어하면 PHP 스크립트가 액세스해서는 안 되는 파일에 액세스하는 것을 방지하고 phpshell의 피해를 줄일 수 있습니다. 어느 정도. 일반적인 상황에서는 웹사이트 디렉토리에만 액세스하도록 설정할 수 있습니다:
open_basedir = /usr/www
6. 위험한 기능 끄기
안전 모드를 활성화하면 기능 금지를 설정할 필요가 없지만 보안상의 이유로 다음을 수행하는 것이 좋습니다. 관련 설정을 하면 됩니다. 예를 들어, 명령을 실행하는 system() 등의 PHP 함수나 PHP 정보를 볼 수 있는 phpinfo() 등의 함수를 실행하고 싶지 않다면 다음 설정을 통해 해당 기능을 비활성화할 수 있습니다.
disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl
If 금지하려는 경우 모든 파일 및 디렉터리 작업에 대해 다음 파일 관련 작업을 끌 수 있습니다.
disable_functions = chdir, chroot, dir, getcwd, opendir, readdir, scandir, fopen, unlink, delete, copy, mkdir, rmdir, rename, file, file_get_contents, fputs, fwrite, chgrp,chmod, chown
Note: 위의 설정에는 가장 일반적으로 사용되는 파일 처리 기능 중 일부만 나열되어 있습니다. 위의 실행 명령 기능을 이러한 파일 처리 기능과 결합하여 대부분의 phpshell 위협에 저항할 수도 있습니다.
7. HTTP 헤더에서 PHP 버전 정보 유출을 차단하세요
해커가 서버에서 PHP 버전 정보를 얻는 것을 방지하기 위해 HTTP 헤더 콘텐츠에서 이 정보의 유출을 금지할 수 있습니다:
expose_php = off
설정 후 이렇게 하면 해커가 실행됩니다. Telnet 9e6c6f86673efa96e9f4645ec38e5f75 80이 서버에 연결을 시도하면 PHP 버전 정보를 볼 수 없습니다.
8. 전역 변수 등록 끄기
POST 또는 GET 명령을 사용하여 제출된 변수를 포함하여 PHP 환경에 제출된 변수는 자동으로 전역 변수로 등록되며 직접 액세스할 수 있습니다. 이는 서버에 매우 위험하므로 전역 변수 등록 옵션을 끄고 제출된 변수를 전역 변수로 등록하는 것을 금지하는 것이 좋습니다.
register_globals = off
Note: 이 옵션 매개변수는 PHP 5.3 이상 버전에서 제거되었습니다.
물론, 이것이 설정되면 해당 변수를 얻기 위해 합리적인 방법을 사용해야 합니다. 예를 들어 GET 명령으로 제출된 var 변수를 얻으려면 $_GET['var']
명령을 사용하여 이를 얻어야 하며 PHP 프로그램을 설계할 때 주의해야 합니다. $_GET['var']
命令来进行获取,在进行 PHP 程序设计时需要注意。
9.SQL 注入防护
SQL 注入是一个非常危险的问题,小则造成网站后台被入侵,重则导致整个服务器沦陷。
magic_quotes_gpc
SQL 인젝션은 매우 위험한 문제로, 웹사이트 백엔드가 침입당하거나 심지어 서버 전체가 붕괴될 수도 있습니다.
magic_quotes_gpc
옵션은 기본적으로 꺼져 있습니다. 이 옵션이 켜져 있으면 PHP는 사용자가 제출한 SQL 쿼리 요청(예: '를 '로 변환 등)을 자동으로 변환합니다. 이는 SQL 주입 공격을 방지하는 데 매우 유용하므로 이 옵션을 설정하는 것이 좋습니다. 대상:
magic_quotes_gpc = on🎜Note🎜: 이 옵션 매개변수는 PHP 5.4.0 이상 버전에서 제거되었습니다. 🎜🎜그러므로 SQL 쿼리를 처리하려면 PDO 전처리를 사용하는 것이 가장 좋습니다. 🎜
10.错误信息控制
一般 PHP 环境在没有连接到数据库或者其他情况下会有错误提示信息,错误信息中可能包含 PHP 脚本当前的路径信息或者查询的 SQL 语句等信息,这类信息如果暴露给黑客是不安全的,因此建议您禁止该错误提示:
display_errors = Off
如果您确实要显示错误信息,一定要设置显示错误信息的级别。例如,只显示警告以上的错误信息:
error_reporting = E_WARNING & E_ERROR
注意: 强烈建议您关闭错误提示信息。
11.错误日志
建议您在关闭错误提示信息后,对于错误信息进行记录,便于排查服务器运行异常的原因:
log_errors = On
同时,需要设置错误日志存放的目录,建议您将 PHP 错误日志与 Apache 的日志存放在同一目录下:
error_log = /usr/local/apache2/logs/php_error.log
注意: 该文件必须设置允许 Apache 用户或用户组具有写的权限。
相关推荐:
위 내용은 PHP 환경에서 보안을 더욱 강화하는 방법은 무엇입니까? PHP 환경의 보안을 강화하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!