2009-09-09 3 views
3

Здравствуйте и спасибо всем за то, что прочитали мой вопрос.Защита файлов PHP

Я немного работал над веб-программой PHP и задавался вопросом, какие меры следует принять для защиты источника, прежде чем размещать его на реальном сервере. Источник не распространяется, к нему обращаются через веб-сайт (пользователи регистрируются на веб-сайте, чтобы использовать его).

Прежде всего, я хочу защитить исходные файлы php от поиска и загрузки. Я не использую фреймворк, только php и все файлы находятся в домашнем каталоге как index.php. Я читал, и кажется, что robots.txt не очень эффективен для скрытия. Я столкнулся с некоторыми сообщениями о рекомендациях .htaccess, но я часто думал, что это для защиты файлов в каталоге с паролем, поэтому не уверен, есть ли способ сделать его htaccess подходящим для веб-приложения.

Во-вторых, я хотел бы защитить исходные файлы в том случае, если кто-то получает к ним доступ (либо находит их, либо загружает их, либо администратор sys, у которого есть готовый доступ к серверу). Я думал об шифровании источника с чем-то вроде ioncube. У моего хозяина также есть GnuPG, с которым я не знаком, никаких мыслей об этом по сравнению с ioncube?

Я не знаком с защитой источника, поэтому любые идеи были бы приятными и, конечно же, спасибо вам большое:)

+0

Это интересный вопрос, и я всегда задавался вопросом, одно и то же сам. Мое понимание (я не отправляю его как ответ, потому что я действительно не уверен) в том, что на основе расширения сервер всегда будет передавать файл через PHP перед отправкой любого ответа. Очевидно, что если вы можете получить доступ через FTP/SSH/SFTP/etc, тогда вы будете получать доступ. Вы можете попробовать программу obfuscation для кода ... –

ответ

3

Просто убедитесь, что ваш веб-сервер настроен правильно обрабатывать .php файлы , и что все файлы имеют правильное расширение .php (не .php.inc или подобное)

Пока ваш сервер выполняет PHP, никто не может загрузить его исходный код (игнорируя любые дыры в вашем коде, что является другой темой)

Было время, когда было принято называть включенные файлы по линиям mystuff.php.inc - это плохая идея. Скажите, что ваш сайт находится на «example.com», и вы сохраняете конфигурацию своей базы данных в . Если кто-то догадывается об этом URL-адресе, он может запросить http://example.com/config.php.inc и получить доступ к базе данных в виде обычного текста.

Это хорошая идея. сохранить конфигурацию и другие библиотеки до одного каталога как bisko answered - так что у вас есть структура каталогов, такая как ..

/var/example.com: 
    include/ 
     config.php 
     helper_blah.php 
    webroot/ 
     index.php 
     view.php 

Таким образом, даже если ваш веб-сервер конфигурации портится, и начинает служить .php файлы как простой текст, это будет плохо, но, по крайней мере, вы не будете объявлять свои данные базы данных в мире. .

Что касается шифрования файлов, я не думаю, что это хорошая идея. Файлы должны быть незашифрованы для Apache (или любого другого сервера, который вы используете) могут получить к ним доступ. Если Apache может получить доступ к нему, ваш сисадмин может тоже ..

Я не думаю, что шифрование является решение ненадежного сисадмина ..

+0

Спасибо, и спасибо – Chris

+0

_they может запросить http://example.com/config.php.inc и получить доступ к вашей базе данных в виде обычного текста .._ как бы PHP отображал обычный текст в браузере без эха? –

0

Хорошо для вашего первого пункта, это безопасность веб-сервера, на которую вы должны искать помощь по серверу. В основном вы использовали бы защищенный/заблокированный каталог для этого или доступ к файлам в виртуальном каталоге через веб-службу.

Для вас второй пункт, вы должны использовать для этого obfuscator, который будет защищать ваш источник, но помните, что если они получат файл, вы можете сделать это только для его защиты. Если они действительно заинтересованы, они получат то, что хотят.

+0

Если кто-то может получить файлы PHP с вашего сервера (запутанные или нет), у вас есть большая проблема, одна из которых не разрешима, поскольку файлы трудно читать! – dbr

+0

Хорошие очки. Именно поэтому я избегаю идеи получить свой собственный linux box для обслуживания от него. Это хороший способ защитить код от плохих системных администраторов, но я должен был бы изучить его работу, иначе я, вероятно, поставил бы код более рискованным, разместив его сам. Вот почему я пришел к идее шифрования с помощью ионкуба. – Chris

0

Первый шаг, который вы должны предпринять, - вынуть все ненужные файлы из корня веб-сайта и поместить их в другое место и оставить только файлы, вызываемые из Интернета.

Например, если у вас есть эта установка:

/var/htdocs/mysexydomain.com/root/config.php 
/var/htdocs/mysexydomain.com/root/db.class.php 
/var/htdocs/mysexydomain.com/root/index.php 
/var/htdocs/mysexydomain.com/root/samplepage1.php 

Возьмите все файлы один уровень выше, так что вы получите

/var/htdocs/mysexydomain.com/includes/config.php 
/var/htdocs/mysexydomain.com/includes/db.class.php #see the includes dir? :) 
/var/htdocs/mysexydomain.com/root/index.php 
/var/htdocs/mysexydomain.com/root/samplepage1.php 
Смежные вопросы