Скрыть PHP от пользователя
Есть ли способ скрыть тот факт, что я использую PHP от своих пользователей? Я хотел сделать это по двум причинам:
- 1) Таким образом, ссылки в адресной строке выглядят чище (как здесь, в stackoverflow)
- 2) Чтобы потенциальные хакеры не могли сразу узнать, что искать
Является ли пункт 2 вообще реалистичным или хакер все равно узнает, что я использую? Я использую nginx с php5-fpm.
5 answers
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Http://eisabainyo.net/weblog/2007/08/19/removing-file-extension-via-htaccess/
В дополнение к изменениям mod_rewrite, также установите expose_php
в значение false: http://www.php.net/manual/en/ini.core.php#ini.expose-php
Приведенные выше (или, возможно, ниже) ответы дают информацию о технической стороне, позвольте мне ответить на моральную сторону:
Не делай этого. Пункт 2 полностью недействителен, если кто-то хочет причинить вред, это его не остановит. Однако надлежащие проверки безопасности будут. Пункт 1 скудно действителен, в наши дни никто больше не печатает ссылки.
Лучший способ скрыть ваш PHP от публичного доступа - это соответствующим образом структурировать ваши папки. Рекомендуется хранить файлы библиотеки и приложений по крайней мере на один уровень выше общей папки, например:
/application
// application files
/library
// library and vendor files
/public (aka public_html, htdocs etc)
index.php
.htaccess
/css
/images
/js
Используйте htaccess и mod_rewrite для маршрутизации запросов в index.php файл, который затем отправит запрос в приложение.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
Таким образом, у вас есть только один общедоступный файл php, который просто включает другие файлы, недоступные через любой URL-адрес
1) Таким образом, ссылки в адресной строке выглядят чище (как здесь, в stackoverflow)
Ммм. ХОРОШО
2) Чтобы потенциальные хакеры не могли сразу узнать, что искать
Безопасность за счет неизвестности. Поверь мне, это не сильно их замедлит.
Однако очень веская причина для этого заключается в том, чтобы ваш веб-сайт не был привязан к определенному языку разработки.
Я вижу, что несколько человек уже упоминали mod_rewrite. Это одно из решений, но это очень сложный инструмент для освоения. Кроме того, будьте очень осторожны при встраивании переменных CGI в путь URL-адреса - вы можете быстро сломать материал.
Простым решением было бы реализовать каждый php-скрипт точки входа (т.Е. Все, что не является включаемым/требуемым файлом) как 'index.php "и ссылайтесь на него по каталогу.
В качестве альтернативы выберите свое собственное расширение файла и замените ссылки на .php в конфигурации вашим расширением.