Возможно ли для пользователя увидеть исходный PHP-код сайта?
Допустим, Вы создаёте свой сайт, сосотоящий из PHP-страниц, которые содержат HTML-код. Эти страницы находятся в корневой папке на хостинге (там же, где и главная index.php ). Понятно, что пользователь, если откроет в браузере средства разработчика, увидит лишь сгенерированный HTML-код. Вопрос: возможно ли для пользователя при таком раскладе увидеть исходный PHP-код, не взламывая сервер с целью получить доступа к файлам? В частности, прошу Вас упомянуть в ответе программы для сохранения страниц с целью дальнейшего их просмотра с автономном-режиме.
Отслеживать
Боков Глеб
задан 17 ноя 2016 в 1:34
Боков Глеб Боков Глеб
1,116 2 2 золотых знака 25 25 серебряных знаков 71 71 бронзовый знак
эти программы действуют ровно так же, как и браузер, и магией не обладают. пока сервер не отдает напрямую содержимео файлов, все безопасно
17 ноя 2016 в 1:50
Такая возможность есть, но только если по каким-либо причинам упал PHP, а Apache продолжает работать. Хз как это можно гарантированно воспроизвести (это будет самый крутой способ взлома, если научиться воспроизводить), но сам уже несколько раз видел, как сайты падая выдают исходный код, вместо процессинга PHP. Так что, к сожалению, приведенные ответы не совсем верны.
5 фев 2017 в 18:09
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Это невозможно ровно до тех пор, пока вы случайно не выключите парсинг PHP-кода в .php-файлах.
Тем не менее, обратившись к файлам, к которым пользователь не должен обращаться, он потенциально так или иначе может навредить вам или даже узнать информацию, которую ему не следует знать. Поэтому рекомендуется делать так, чтобы в директории, доступной по HTTP, был всего 1 PHP-файл: index.php . Этот файл в свою очередь должен уже взаимодействовать с другими PHP-файлами, находящимися уровнем выше этого каталога. Примерно так:
project/ ├── public/ │ ├── index.php │ ├── robots.txt │ └── sitemap.xml └── app/ ├── MyClass.php └── MyAnotherClass.php
Вы сможете обратиться к index.php , скажем, по адресу localhost/index.php , равно как к localhost/robots.txt и localhost/sitemap.xml , но обратиться к файлам MyClass.php и MyAnotherClass.php по HTTP вы никак не сможете.
Возможно ли прочитать код php на сайте?
День добрый! Возможно, странный вопрос, но как прочитать файл .php на сайте?
Например, мне интересно, как реализована отправка письма на почту с формы на сайте или какой-либо другой скрипт, но при попытке открыть файл domain.com/name.php я вижу белый экран и всё.
- Вопрос задан более трёх лет назад
- 943 просмотра
Комментировать
Решения вопроса 3
Cyber_bober @Cyber_bober
Если вы разберетесь в том, что такое PHP, то вы узнаете что этот язык обрабатывается на сервере а в браузере вы видите только ответ от него. То есть ответ — норма.
Ответ написан более трёх лет назад
Нравится 3 1 комментарий
Вениамин Смирнов @Ingword Автор вопроса
Я с PHP не знаком, поэтому и возник этот вопрос. Спасибо 🙂
ThunderCat @ThunderCat Куратор тега PHP
Если сервер настроен правильно, то вы увидите РЕЗУЛЬТАТ РАБОТЫ скрипта в файле, а не содержимое файла. Если бы можно было читать файлы php с сервера, это было бы большой проблемой, т.к. в них довольно много приватной информации(пароли, методы генерации ключей етц), не говоря уже о том, что некоторый код имеет ценность сам по себе, являясь собственностью разработчиков/владельцев сайта.
И да, вопрос странный.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Сапиенсы учатся, играя.
Тем не менее, прочитать .php файл на сайте можно (например зайти на хост по фтп).
Но если вы это сделали из браузера — значит «админу» (сайта) надо оторвать руки.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- PHP
- +1 ещё
Почему unserialize возвращает пустое значение?
- 1 подписчик
- час назад
- 31 просмотр
Как запустить php скрипт в браузере?
Установил локальный сервер dewner, посоветовали его. Следовал инструкции и в итоге запустил код в браузере, указывая путь к файлу, но вместо выполнения скрипта, я получил свой код. В чём может быть ошибка?
- Вопрос задан более двух лет назад
- 1241 просмотр
4 комментария
Простой 4 комментария
Главная — в том, что послушал совета чайника и установил сто лет как протухший Денвер.
Дмитрий @Dmitriy228 Автор вопроса
Тогда лучше через линукс создавать локальный сервер?
ваш сайт должен быть доступен по адресу localhost или 127.0.0.1 / 127.0.0.1:8080 скорее всего, если нет — смотрите в конфигурационном файле
Дмитрий @slo_nik Куратор тега PHP
Denwer, как уже написали выше, надо удалить. Толку от него никакого.
Какой ОС Вы пользуетесь?
Решения вопроса 0
Ответы на вопрос 4
Не в браузере нужно запускать а сервер должен обрабатывать PHP файлы.
Или спрашивай у того, кто тебе посоветовал ставить денвер или читай оф документацию
https://www.php.net/manual/en/install.windows.php
раздел «Apache 2.x on Microsoft Windows»
Есть еще варианты
https://www.apachefriends.org/index.html
Я бы предпочел ставить по документации с php.net или скорее докер, но последний немного сложнее
Используя докер ты унифицируешь процесс разработки и деплоя продукта на сервер, но не уверен насколько тебе это актуально.
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Софт для автоматизации
А теперь сноси то, что поставил и установи хотя бы тот же OpenServer:
https://ospanel.io
На нем все и тестируй, для новичков идеально.
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Для начала, как посоветовал добрый человек сверху, скачай OpenServer, создавай в domians папку и запускай сервер. Если папка называется hw, то путь в браузере будет следующим: hw/local.php, полный указывать не надо.
В local.php, естественно, должен быть твой код.
Если нужен HTML, то можешь писать его за пределами тега .
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- PHP
- +1 ещё
Почему unserialize возвращает пустое значение?
- 1 подписчик
- час назад
- 31 просмотр
Как посмотреть php-код программы в браузере
Иногда требуется вывести php-код программы непосредственно на экран браузера или прочитать его и передать в виде текста. Итак, возможно ли передать код php-скрипта так, чтобы он был в том виде, в котором он содержится в файле на сервере? В этой статье рассмотрим короткую программу на языке программирования php, которая передаёт свой собственный код в браузер при обращении к ней. Рассмотрим сразу два варианта: как передать код программы на php в браузер для того, чтобы его можно было прочитать. И второй вариант: просмотр исходного кода php-скрипта в том виде, в котором он хранится в php-файле на сервере.
Как передать код программы на php в браузер
Сразу приведу готовый листинг программы, которая будет выдавать собственный код в браузер. После этого, разберём, как же он работает и, слегка его упростив, получим программу, которая передаёт php-код, который содержится в ней. Итак, собственно программа:
Как всё это работает:
В переменную $file_handle вносим имя файла, из которого запускается этот скрипт, из переменной среды окружения $_SERVER[‘SCRIPT_FILENAME’] и открываем его на чтение. Это позволит автоматически определять php-скрипт, код которого нужно передать для просмотра в браузере.
После этого запускаем цикл построчного обхода этого файла (пока в нём будет что читать): while (!feof($file_handle))
Читаем в переменную $line очередную строку из файла: $line = fgets($file_handle);
И выдаёт эту переменную в печать: echo htmlspecialchars($line) . ‘
‘;
С последней строчкой возникают проблемы, так как функцией htmlspecialchars() мы преобразуем специальные символы в HTML-сущности. Такие, как угловые скобки и всё, что может быть интерпретировано браузером, как элементы языка HTML. И в конце строки вставляем HTML-тег
для того, чтобы новая строка отображалась в браузере с новой строчки.
Всё это хорошо работает и позволяет посмотреть php-код в браузере, но если посмотреть полученный код, он будет во-первых без табуляций и пробелов в начале строк в самом браузере, а в коде страницы, все HTML-сущности будут заменены на символы HTML. Ну и в-третьих, в этом коде будут встречаться вставленные HTML-теги
.
Но, в общем и целом, можно скопировать полученный в браузере php-код, вставить его в php-скрипт и он будет рабочим.
Как просмотреть исходный код php-скрипта в том виде, в котором он хранится в php-файле на сервере
Для того, чтобы избежать всех этих заморочек с HTML-разметкой, можно просто передать значение переменной $line в браузер: echo $line; , закомментировав строку с форматированным выводом:
'; echo $line; > ?>
И тогда, в самом браузере может собраться чёрте-что, но открыв HTML-код страницы можно увидеть исходный php-код со всеми пробелами, табуляциями и всем прочем, что находится в исходном php-скрипте. И именно этот код будет полностью идентичным с тем, что находится на сервере.
Резюме
Таким простым способом можно посмотреть php-код любого скрипта, находящимся на сервере, вызвав его способом, описанным выше.
Конечно для этого нужно иметь доступ к серверу. Однако, данный способ может быть полезным, когда требуется собрать php-скрипт из нескольких частей, передав эти части по обычному http или https протоколу.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉