У меня вот такой вопрос, сайт расположен в директории "/var/www/mef/data/www/mef.su/". Я слышал, что есть способы взломать и увидеть скрипт индексной страницы. Если его расположить в директории выше "/var/www/mef/data/www/script.php" и вызывать его на сайте инклюдом, может ли взломщик получить содержимое файла script.php?
если у пхп есть доступ, то получит полюбас. если доступа нету, то работать не сможет. почему ты думаешь, что ты понаделал таких дыр, что у тебя смогут вытащить всякое лишнее?
Дыр то может и нет, но лишняя защита никогда не помешает Ну или, к примеру, при подключении к базе данных необходимо прописать в скрипте логин/пароль, следовательно эти данные можно вытащить?
Выкладывать конфиги на каталог выше имеет смысл только в одном случае - застраховаться от отвала пыха на сервере, в ходе которого сервак начнет плеваться исходниками, воспринемая php-файлы как текст, а не скрипты. Тогда любое быдло из браузера сможет утянуть твои конфиги с явками и паролями к базе. А если выложить их на каталог выше, из браузера их никто не сможет извлечь, хоть убейся. Ну разве что попялятся на код остальной. Это не смертельно. Успокоения ради, такое случается так редко, что почти никогда. Но тем не менее, это как пуля в висок - словить ее за время жизни можно, но шанс почти нулевой, однако, в случае чего, хватит и одной.
хватит трепаться. автор, по возможности размещай скрипты и данные за пределами DocumentRoot. это best practices. Добавлено спустя 1 минуту 14 секунд: да, include будет открывать данные и оттуда. и тем не менее.
Вот примерно об этом я и хотел узнать, спасибо Ещё вот такой вопрос, величина вставляемого инклюдом кода сильно влияет на производительность? Или не важно, писать код в этом же скрипте, или спрятать в другой скрипт? Добавлено спустя 2 минуты 12 секунд: То есть в идеале весь код инклюдить? Опять же, как это может повлиять на производительность?
1 инклуд пустого файла примерно равен по затратам вызову 26 пустых функций, без возврата и рабочего тела, просто дернуть туда-сюда стек вызовов. Далее, в зависимости от файла, требуется время на интерпретацию. Если все писать в один файл, время интерпретации так же будет зависеть от размера. По сути вы экономите только расход в размере 26 вызовов пустых функций. В относительных величинах это кажется большим числом. На деле речь идет о просто нано-величинах. Далее. Скрипты не должны быть избыточны. Если есть большой кусок кода, который используется, скажем, только в определенном контексте, его не следует пихать в "простыню" - это избыточный код, который не нужен. Его следует вынести в инклуд и цеплять по мере надобности. От того и пляшите в принятии решения - разделять или не разделять. Расход на инклуд ничтожен по сравнению с экономией от выноса "лишнего" кода. Также, инклудить имеет смысл код, логически обособленный. Чтобы держать структуру проекта в порядке и чистоте. З.Ы. Лучше не инклудить, а реквайрить. И не просто, а _once, если позволяет архитектура.
Реквайрить, потому что инклуд в случае фейла даст ворнинг, а реквайр фаталку. А once, потому что если точка подключения проходится больше 1 раза, начнут плодиться подключаемые файлы и, в лучшем случае это будет фейл в плане расхода ресурсов. В худшем - конфликты имен классов, функций.
Fell-x27, ты непоследователен. Ели уж делать архитектуру, фаталом выявляющую косяки, то не надо никаких *once. Я для себя завел такую классификацию инклудов: - для загрузки класса. автлоадер подключает файл когда нужен класс. второй раз он туда же не полезет, т.к. класс уже есть; - для загрузки "обходного решения". if (!function_exists(…)) { require 'myworkaround.php'; } — та же история, что с классом; - для загрузки элемента Представления (шаблона). запрещать повторное подключение смысла нет — это может быть действительно нужно. Для этих трех случаев *once не нужен. А других случаев у меня просто нет — такая архитектура. да весь. не смеши, есть куда более затратные вещи.
http://php.ru/forum/viewtopic.php?f=2&t=38384&p=313551&hilit=+require_once#p313551 Вообще. Подключение файла мало зависит от защиты, все файлы выше нельзя закрыть, и "БРЕДОВАТЬ, что ПЫХ рухнет", - это бредово. Просто нужно еще и файлы защищать, чтобы нельзя было на них переходить в ручную, чтобы только можно было их держать по одной индексации, а не оторванными.