За последние 24 часа нас посетили 22730 программистов и 1561 робот. Сейчас ищут 922 программиста ...

расположение скрипта

Тема в разделе "PHP для новичков", создана пользователем mef, 17 апр 2014.

  1. mef

    mef Новичок

    С нами с:
    17 апр 2014
    Сообщения:
    7
    Симпатии:
    0
    У меня вот такой вопрос, сайт расположен в директории "/var/www/mef/data/www/mef.su/".
    Я слышал, что есть способы взломать и увидеть скрипт индексной страницы.
    Если его расположить в директории выше "/var/www/mef/data/www/script.php" и вызывать его на сайте инклюдом, может ли взломщик получить содержимое файла script.php?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если у пхп есть доступ, то получит полюбас. если доступа нету, то работать не сможет.

    почему ты думаешь, что ты понаделал таких дыр, что у тебя смогут вытащить всякое лишнее?
     
  3. mef

    mef Новичок

    С нами с:
    17 апр 2014
    Сообщения:
    7
    Симпатии:
    0
    Дыр то может и нет, но лишняя защита никогда не помешает:)
    Ну или, к примеру, при подключении к базе данных необходимо прописать в скрипте логин/пароль, следовательно эти данные можно вытащить?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    всё можно вытащить
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Выкладывать конфиги на каталог выше имеет смысл только в одном случае - застраховаться от отвала пыха на сервере, в ходе которого сервак начнет плеваться исходниками, воспринемая php-файлы как текст, а не скрипты. Тогда любое быдло из браузера сможет утянуть твои конфиги с явками и паролями к базе. А если выложить их на каталог выше, из браузера их никто не сможет извлечь, хоть убейся. Ну разве что попялятся на код остальной. Это не смертельно.

    Успокоения ради, такое случается так редко, что почти никогда. Но тем не менее, это как пуля в висок - словить ее за время жизни можно, но шанс почти нулевой, однако, в случае чего, хватит и одной.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    хватит трепаться. автор, по возможности размещай скрипты и данные за пределами DocumentRoot. это best practices.

    Добавлено спустя 1 минуту 14 секунд:
    да, include будет открывать данные и оттуда. и тем не менее.
     
  7. mef

    mef Новичок

    С нами с:
    17 апр 2014
    Сообщения:
    7
    Симпатии:
    0
    Вот примерно об этом я и хотел узнать, спасибо:)
    Ещё вот такой вопрос, величина вставляемого инклюдом кода сильно влияет на производительность? Или не важно, писать код в этом же скрипте, или спрятать в другой скрипт?

    Добавлено спустя 2 минуты 12 секунд:
    То есть в идеале весь код инклюдить? Опять же, как это может повлиять на производительность?
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1 инклуд пустого файла примерно равен по затратам вызову 26 пустых функций, без возврата и рабочего тела, просто дернуть туда-сюда стек вызовов. Далее, в зависимости от файла, требуется время на интерпретацию. Если все писать в один файл, время интерпретации так же будет зависеть от размера. По сути вы экономите только расход в размере 26 вызовов пустых функций. В относительных величинах это кажется большим числом. На деле речь идет о просто нано-величинах.

    Далее.

    Скрипты не должны быть избыточны. Если есть большой кусок кода, который используется, скажем, только в определенном контексте, его не следует пихать в "простыню" - это избыточный код, который не нужен. Его следует вынести в инклуд и цеплять по мере надобности. От того и пляшите в принятии решения - разделять или не разделять. Расход на инклуд ничтожен по сравнению с экономией от выноса "лишнего" кода.
    Также, инклудить имеет смысл код, логически обособленный. Чтобы держать структуру проекта в порядке и чистоте.

    З.Ы. Лучше не инклудить, а реквайрить. И не просто, а _once, если позволяет архитектура.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пачаму?
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Реквайрить, потому что инклуд в случае фейла даст ворнинг, а реквайр фаталку. А once, потому что если точка подключения проходится больше 1 раза, начнут плодиться подключаемые файлы и, в лучшем случае это будет фейл в плане расхода ресурсов. В худшем - конфликты имен классов, функций.
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Fell-x27, ты непоследователен. Ели уж делать архитектуру, фаталом выявляющую косяки, то не надо никаких *once.

    Я для себя завел такую классификацию инклудов:
    - для загрузки класса. автлоадер подключает файл когда нужен класс. второй раз он туда же не полезет, т.к. класс уже есть;
    - для загрузки "обходного решения". if (!function_exists(…)) { require 'myworkaround.php'; } — та же история, что с классом;
    - для загрузки элемента Представления (шаблона). запрещать повторное подключение смысла нет — это может быть действительно нужно.

    Для этих трех случаев *once не нужен. А других случаев у меня просто нет — такая архитектура.

    да весь. не смеши, есть куда более затратные вещи.
     
  12. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    http://php.ru/forum/viewtopic.php?f=2&t=38384&p=313551&hilit=+require_once#p313551
    Вообще.
    Подключение файла мало зависит от защиты, все файлы выше нельзя закрыть, и "БРЕДОВАТЬ, что ПЫХ рухнет", - это бредово.
    Просто нужно еще и файлы защищать, чтобы нельзя было на них переходить в ручную, чтобы только можно было их держать по одной индексации, а не оторванными.