Скрыть PHP от пользователя


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

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

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

Author: genesis, 2011-07-15

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/

 6
Author: genesis, 2011-07-14 23:09:59

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

 4
Author: Christopher Manning, 2011-07-14 23:12:19

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

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

 3
Author: orlp, 2011-07-14 23:13:52

Лучший способ скрыть ваш 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-адрес

 2
Author: adlawson, 2011-07-14 23:17:20

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

Ммм. ХОРОШО

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

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

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

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

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

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

 1
Author: symcbean, 2011-07-15 08:32:14