2010-07-28 4 views
1

Есть ли способ получить исходный файл PHP, как и для HTML-файла или javascript только из веб-браузера? Если да, то как? Если не так?PHP, получающий файл PHP

+0

Почему я пропустил голосование? – denniss

+1

Не знаю, почему это было закрыто. В любом случае, google для 'AddHandler application/x-httpd-php-source .phps', и вы найдете несколько статей о том, как настроить Apache для возврата PHP-источника вместо вывода PHP-скрипта. –

+1

Также см. Этот вопрос, который является тем же: http://stackoverflow.com/questions/498521/php-security-retrieving-php-file-from-server-un-processed –

ответ

2

Нет, это невозможно. Серверные языки предназначены для интерпретации и запуска до, вывод отправляется в браузер.

+0

Возможно, просто непросто. – rook

+0

Правильно ... когда сервер терпит неудачу, весь текст будет напечатан на веб-браузере правильно? Итак, как интерпретировать PHP-скрипт? – denniss

+0

Да, но это зависит от плохого кода на стороне сервера, а не от действий клиента. Невозможно получить серверный код по требованию. –

0

Только в случае сбоя веб-сервера. В противном случае нет, потому что весь код выполняется на сервере, и только его результат отправляется в браузер.

2

Конечно. Но только если веб-сервер настроен на возврат только файла и не интерпретирует его в первую очередь. Большинство веб-серверов, на которых размещаются PHP-файлы, не настроены таким образом.

3

Для того, чтобы читать исходный код PHP на удаленном сервере, пользователю необходимо найти и использовать удаленный file disclosure vulnerability.. Это наиболее часто встречающееся в приложении само собой и может быть обнаружено с помощью сканера уязвимостей веб-приложений, такого как w3af.

MySQL-SQL-инъекция может использоваться для чтения файлов с использованием функции load_file() как .

Возможно, httpd может быть уязвим для атаки раскрытия исходного кода, такой как этот в IIS.

0

Нет, это создало бы серьезную угрозу безопасности с паролями MySQL и другими конфиденциальными данными.

+0

да ... вот почему я волнуюсь. – denniss

+0

Вы помещаете пароли * в * свой код? Это само по себе представляет собой серьезный риск для безопасности. Поместите его/их в файл конфигурации, поместите файл * вне * веб-пространства, так что * нет способа * сервер может отправить его. Заблокируйте файл с помощью очень ограничительных разрешений. Не проверяйте файл в контроле версий. –

1

Существует способ сделать это - но у вас есть веб-сервер, который должен быть настроен для обслуживания «.phps» в виде текста/plain, как я сделал, чтобы продемонстрировать примеры кода с моего веб-сервера. Однако, если вы пытаетесь использовать код на веб-сайте php, это невозможно. Не из веб-браузера.

0
<?printf($f='<?printf($f=%c%s%c,39,$f,39);?>',39,$f,39);?> 

так, да.

+0

whaaat ?? каков черт '$ f' и что должен делать этот сценарий, и как вы должны его выполнять на сервере, который не является вашим? – mpen

+0

Mark, этот код печатает сам. – iandisme

Смежные вопросы