Скрыть PHP от пользователя - PullRequest
3 голосов
/ 15 июля 2011

Есть ли способ скрыть тот факт, что я использую PHP от моих пользователей?Я хотел сделать это по двум причинам:

  • 1) Таким образом, ссылки в адресной строке выглядят чище (как здесь, на stackoverflow)
  • 2) Чтобы потенциальные хакеры не узнали об этом немедленночто искать

Точка 2 даже реалистична или хакер все равно узнает, что я использую?Я использую nginx с php5-fpm.

Ответы [ 5 ]

6 голосов
/ 15 июля 2011
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/

4 голосов
/ 15 июля 2011

В дополнение к изменениям mod_rewrite также установите для expose_php значение false: http://www.php.net/manual/en/ini.core.php#ini.expose-php

3 голосов
/ 15 июля 2011

Приведенные выше (или, возможно, ниже) ответы дают информацию о технической стороне, позвольте мне ответить с моральной стороны:

Не делай этого. Пункт 2 полностью недействителен, если кто-то хочет причинить вред, это не остановит его. Правильные проверки безопасности, однако, будут. Пункт 1 скупо действителен, в наши дни никто больше не печатает ссылки.

2 голосов
/ 15 июля 2011

Лучший способ сохранить ваш 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 голос
/ 15 июля 2011

1) Таким образом, ссылки в адресной строке выглядят чище (как здесь, на stackoverflow)

ммм.OK

2) Чтобы потенциальные хакеры не могли сразу узнать, что искать

Безопасность по незаметности.Поверьте мне, это не сильно их замедлит.

Однако очень веская причина для этого заключается в том, что ваш сайт не привязан к определенному языку разработки.

Я вижунесколько человек уже упомянули mod_rewrite.Это одно решение - но это очень сложный инструмент для освоения.Кроме того, будьте очень осторожны с встраиванием переменных CGI в путь URL - вы можете быстро разбить материал.

Простым решением будет реализация каждого php-сценария для точки входа (т.е. все, что не является включением /Требовать файл) как 'index.php' и ссылаться на него по каталогу.

В качестве альтернативы выберите собственное расширение файла и замените ссылки на .php в конфигурации на ваше расширение.

...