Страницы

Поиск по вопросам

воскресенье, 24 ноября 2019 г.

Возможность выдачи сервером исходного кода


Вот в этом вопросе меня заинтересовал приведенный в одном из ответов код.  

/* безопасное соединение с базой данных, файл лежит перед корнем сайта если вдруг упадет php, логин и пароль к базе данных никто не сможешь увидеть */
include_once('../db-site.php');


Как я понимаю, автор боится того, что сервер Apache+PHP вместо выполнения PHP-сценари
выдаст исходный код чистым текстом. Но ведь это должно быть невозможно в принципе (как я понимаю), ведь даже если PHP упал, то Apache при запросе в адресе *.php попытается запустить php, который лежит, а значит пользователь получит в ответ ошибку, или ничего.
Вопрос: при каких условиях возможна выдача сервером исходного кода?
    


Ответы

Ответ 1



Есть PHP ляжет, то сервер отдаст PHP-листинг (исходный код).

Ответ 2



к чему столько паники, пишем адекватный .htaccess перенаправляющий все запросы н index.php , в index.php только инклюды необходимых файлов (ядра, контроллера и т.д.) и всё даже если пхп упадет пользователь получит листинг только файла index.php а извращаться и хранить файл подключения к бд под корнем сайта это, извините, параноя.

Ответ 3



Не извращайтесь так) В index.php пишем инклуд, весь остальной код ограничиваем какой-то папкой. У меня получилось такое: #.htaccess ErrorDocument 404 /404.html RewriteEngine On RewriteRule ^system/.*/$ /404.html [L] #папки RewriteRule ^system/.*\.php$ /404.html [L] #.php Ну а если ляжет поддержка .htaccess - скорее всего это будет означать, что лег апач.

Ответ 4



У меня сделано как. Я сторонник меньшего числа вхождений в программу. Т.е: Есть index.html и api.php - они лежат в /var/www/web/ <--- Web Root path, и ест куча файлов за ней. (/var/www/core/*.php). В Api.php есть строка, которая подключает стартап файл с модулями (при require, в отличии от простого "include" разница во времени незаметна). Например. api.php -- require -> ../core/start.php start.php -- require -> ./*.php Api.php содержит Класс, который в зависимости от запроса будет задействовать то или иной класс и отдавать нужную информацию. Тем самым я себя защитил от: Если ляжет php, никто все равно не получит исходники. Все равно в api.php нет ничего такого, что помогло бы злоумышленнику ломануть ту..или иную штуку. Чем меньше число вхождений в программу, тем проще контролировать корректность запросов => Если будет замечена дыра - ее будет оч. просто ее прикрыть :) Собственно, все :)

Ответ 5



Чтобы исходники не стащили, достаточно закодировать скрипты хоть тем же Zend Guard. Ну а если у Вас свой сервер, пусть и виртуальный, но с отключенной возможностью удаленного подключения к БД, то "украденные" пароли ничем не помогут. Ну а если у Вас нет денег ни на приличный хостинг, ни на Zend Guard, то кому нужно Вас "ломать"?

Ответ 6



Падение пыха не обязательно. Достаточно в htaccess, а лучше в php.ini прописать такое: AddType application/x-httpd-php-source .php И сервер будет выдавать вместо результатов вычислений красивый подсвеченный исходник.

Ответ 7



Лучше писать код так, чтобы его можно было выложить хоть на GitHub и ничего секретного не ушло. А доступы к базе данных, ключи к API хранить в переменных окружения (http://12factor.net/ru/config) или вообще в стороннем сервисе (https://www.vaultproject.io/docs/secrets/consul/)

Комментариев нет:

Отправить комментарий