Защо PHPSuExec и сигурността дупката на PHP
На повечето сървъри Apache, PHP работи като Apache модул. Като такъв, той работи директно в потребителската Никой, но doesn't изискват изпълнение флаг. Това означава, че за да се изпълни файл PHP, той просто трябва да се чете света. Проблемът е, че това дава възможност на всеки други потребители на сървъра да прочетете вашите PHP файлове!

Разрешаването на други потребители да четат вашите HTML файлове, не е проблем, тъй като те могат да бъдат показвани в Internet Explorer. Въпреки това, PHP файлове не се четат, те се предават. Много скриптове употреба файл PHP база данни за съхраняване на потребителско име и парола. Това означава, че на друг сървър всеки клиент може да прочетете вашите PHP файлове, възвръщам си парола и достъп до бази данни.

Интернет доставчиците близо този отвор от инсталиране на Apache модул наречен PHPSuExec, който изпълнява PHP скриптове под вашето потребителско име. Вместо да използвате everyones разрешения, които използва на собствениците разрешения. По този начин можете да промените разрешенията на PHP скриптове за 0700 или 0400 и да четат и да ги изпълни. Въпреки това, тези скриптове вече няма да бъдат достъпни за всички други потребители. PHPSuExec ще откаже да изпълни скрипт, ако е световно записва да ви предпази от някой злоупотребява един от вашите скриптове.

Можете лесно да разберете дали вашият сървър е PHPSuExec поддръжка, като посетите сървъри phpinfo страница. Просто гледам за следващите близо до началото на тази страница. (4-та клетка надолу Server API): - сървър API Apache Това означава, че вашият сървър се изпълнява в момента PHP като Apache модул. Ако в рамките на phpinfo страница, която виждате следното: - сървър API CGI Тогава вашият сървър е инсталация на CGI PHP с suexec поддръжка.

Каква е разликата?
Повечето сайтове, няма да бъдат засегнати от промяната, който върви с PHP като CGI suexec. PHPSuExec работи по същия начин, че CGI (Perl скриптове и т.н.) с suexec се, всички заявления се провежда под вашето потребителско име сметка UID / GID, отколкото в PHPs случай като Apache модул, потребителят никой.

Това просто означава, че правилата, които се прилагат към. CGI +. PL файлове на текущото ви служа, се прилагат за PHP файлове също. Максималният разрешен разрешена на директории и PHP файлове е 755. При липса на разрешения за определени до максимум от 755 на PHP файлове и инсталирането им пътеки, ще доведе до вътрешни 500 грешка в сървъра, когато се опитва да ги изпълни.

Файл & Папка Разрешения
Както се вижда от таблицата, само се изисква разрешение от собствениците чете 0400, но ако имате нужда да пишат в този файл, трябва също да даде възможност на собствениците напишете разрешение 0600. Препоръчително е, че всички PHP файлове имат разрешение CHMOD 0400 или 0600. В изпълнение на разрешение никога не е необходимо, и на групата и всички разрешения могат да бъдат оставени на 0.

PHPSuExec също така одобрява указатели, в които са разположени PHP файлове. Файл PHP не може да бъде изпълнена в директорията, която е група записва или по света писане. Все пак, за да имат достъп до директорията, тя трябва да бъде световен изпълнител, който е безопасно. Така папки, които съдържат PHP файлове трябва да имат разрешения 0755 или 0555. Прочетете Напиши Изпълнявам собственика да Напиши Всеки групата.

777 Трябва ли директории, определени за това? Моят настанявам ръкопис се казва, че аз правя.
Не, не е нужно да имате директории и файлове, определени на 777, дори и ако вашата инсталация документите ви кажа, че ти правя. Разрешения от 755 ще работи по същия начин, скриптове, притежавани от вашия потребителски акаунт UID / GID ще могат да пишат до файловете си, по същия начин, че да могат да изпълняват под Apache с 777 разрешения.

Ако имате PHP приложения / скриптове, които са определени директории към 777, (задължително да пишат в тях по PHP / Apache модул), те ще трябва да се промени. Също така ние ще трябва да се промени владения на всички файлове, собственост на никой потребител на потребителско име UID / GID за вашия профил.

. Htaccess
Вие не можете да манипулирате с настройките на php.ini. Htaccess когато работят с PHP като CGI / phpsuexec. Ако вие използвате. Htaccess с php_value влизания в нея, вие ще получите вътрешния сървър 500 грешка при опит за достъп на скриптове. Това е така, защото PHP вече не работи като модул към Apache и Apache не ще се справят с тези директиви, по-дълго. Всички PHP стойности следва да бъдат премахнати от вашия. Htaccess файлове за да се избегне този проблем. Поставяне на файла php.ini на негово място ще решим този въпрос. (Моля, вижте по-долу.)

Настройките по подразбиране, имам нужда от PHP да тичам с различни опции от настройките по подразбиране сървъри, мога ли да направя това?
Настройките по подразбиране сървър с php.ini могат да ограничат някои приложения, е възможно да се променят настройките на PHP и как ще се движат по вашата сметка, на базата на директория. Ако имате приложение, което изисква например: --

register_globals трябва да е включен

След като създадете файл с име php.ini в директорията, че скриптът е разположен в рамките на, с влизането register_globals = На ще ви позволи да тече този скрипт с настройките си.

  1
   On На register_globals = 

Имате право да копирате на други променливи от phpinfo страница, след като те се появяват в нея и променя настройките, както се изисква за скриптове.

Бързо неприятности стрелецът. . . . . Помощ моя PHP скрипт не работи или имам съобщение за грешка

  1. Проверете дали PHP скрипт, който се опитва да изпълни има разрешение от не повече от 755 644 ще работи добре нормално, това не е нещо, което ще трябва да бъдат променени в повечето случаи.
  2. Проверете дали CHMOD разрешения за папката, която живее в скрипта е определен на максимум 755. Това включва също и папки, че скриптът ще трябва да имат достъп до също.
  3. Проверете дали файловете са притежавани от вас не собственост на потребителя, т.е. никой. Някои приложения като се движат при PHP като модул на Apache, може да има файлове, собственост на потребител Apache В този случай, представя бюро билет за файла владения да се промени.
  4. Проверете дали сте все още нямате. Htaccess файл с php_values в нея. Те ще предизвикат 500 Internal Server грешка, когато се опитва да изпълни сценария. В php_values ще трябва да бъдат премахнати от вашия. Htaccess файл и вместо това един файл php.ini трябва да бъдат поставени, съдържащ PHP директиви, както е обяснено по-горе.

Подобни публикации: