За последние 24 часа нас посетили 64748 программистов и 1744 робота. Сейчас ищут 1168 программистов ...

Закрыть доступ ф-ции file_get_contents()

Тема в разделе "Прочие вопросы по PHP", создана пользователем Fumafu, 6 фев 2015.

  1. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Здравствуйте. В общем требуется закрыть доступ к содержимому файла из своих же скриптов, но не для всех. Для того чтоб объяснить суть вопроса давайте допустим что у нас есть скрипты: config.php, main.php, module.php которые лежат в одной папке.

    config.php
    Код (Text):
    1. Hello, World!
    main.php
    Код (Text):
    1. <?php
    2. file_get_contents(dirname(__FILE__) .  '/config.php');
    3. include 'module.php';
    module.php
    Код (Text):
    1. <?php
    2. file_get_contents(dirname(__FILE__) . '/config.php');
    Соответственно возможно-ли создать условия при которых во время main.php все спокойно сработает, а вот при чтении файла в module.php возникает ошибка доступа или другая фига??? Учитывая что main.php запускается при обычном http запросе на наш сайт.
    У меня только одна догадка: если скрипты config.php и main.php создам я (т.е. буду их владельцем), а скрипт module.php создаст кто-то другой и при этом у скрипта config.php выставить права только чтение владельцем, но я не могу это пока еще проверить. Как вы думаете поможет такой вариант? А если нет, то есть-ли еще какие-нибудь?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    просто надо ДО чтения файла проверить права юзера читать эти файлы.
     
  3. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Вопрос в том что когда апач запускает скрипты не работают-ли они все от имени одного и того же пользователя?
    Впрочем я сегодня встал и подумал что занимаюсь ерундой. Проще получив полный доступ к серваку просто запретить ее, а вместо нее даже нужно использовать инклуд и курл. С инклудом проще, там можно использовать трюк с установкой переменной, ее проверкой и ансетом.
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я про юзеров сайта, а не сервера
     
  5. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    тут речь о разных прогерах, чтобы один не мог смотреть файлы другого
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    оу

    Добавлено спустя 17 секунд:
    дайте им разные серверы
     
  7. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    так им надо будет работать над одной системой, понятно что они получат разные фтп аккаунты, но у них также будут разные бд аккаунты и соответственно доступ к разным таблицам, требуется чтобы один прогер не смог узнать данные для подключения к бд другого прогера, которые хочешь не хочешь, но будут где-то в скриптах прописаны.
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да не давайте вы им настоящие данные и вопрос решён
     
  9. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    разумеется у нас есть тестовый сервер с тестовой базой где нет "секретных" данных, но что мешает оставить в скрипте код который по курлу передаст данные о подключении к бд или выведет его при определенном гет параметре который я не замечу и перенесу на продактшн. может это все и паранойя конечно, но как говорится береженого бог бережет, к черту эту функцию тем более что это просто упрощенный функционал курла.
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а, ну ничего не мешает сделать закладку в код, да.
     
  11. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  12. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    это сильно круто :) к тому же это все равно не решит проблему ведь скрипты запущенные по веб запросу все-равно будут друг для друга своими и читай не хочу контент любого скрипта. тут хитрость в том что нужно скрыть инфу от прогера который работает рядом с тобой над тем же проектом.
     
  13. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а есть алгоритм по которому можно понять какой url за каким пользователем закреплён? Можно доступ по ip открыть только для одного по url.
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чего ты хочешь-то? =) данные у них не настоящие, а закладку в код заложить могут, вытащить твои пароли наружу тоже могут.
     
  15. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    В общем я предлагаю тему закрыть следующим выводом file_get_contents() в отличае от инклуда никак не контрится в среде разработчиков, вот как-то так :)
     
  16. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно запретить вызывать функцию file_get_contents
     
  17. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    так это и было решено :)
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    отлично, какой смысл тогда класть на сервак файлы, которые нельзя прочитать?

    Вы сказали, что должны быть файлы, и к ним из скрипта происходят обращения.

    Бредом каким-то занимаетесь. Если вам надо держать разные данные доступными для разных разрабов, то не надо вообще пускать их на один сервер. Все работают у себя на локалках счастливо всегда. На сервак выкладывается стабильная проверенная сборка из системы версий. При этом разрабам не требуется вообще лазить куда-то дальше своего компа.
     
  19. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    да, в надежде что можно найти способ закрыть чтение скриптов всеми скриптами подряд, но его как оказалось нет, значит функция запрещается, а там где использовалась заменяется на инклуд и курл.

    локалки и проверенная версия это все конечно хорошо, но мне нужна помощь, а не дополнительная нагрузка
     
  20. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    идиотизмом не страдайте. =) что мешает человеку сделать такой же инклуд или курл? вы же оставили возможность читать файл. какая разница как именно?

    Добавлено спустя 34 секунды:
    вам нужны админ и тилид и понимание вообще минимальное хотя бы того, как устроен компьютер.
     
  21. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    а вам видимо нужен трон
    берем код из примера

    config.php
    Код (Text):
    1. <?php if (!isset($code) || $code != 'secret_code')  exit('No'); ?>
    2. Hello, Word!
    main.php
    Код (Text):
    1. <?php
    2. $code = 'secret_code';
    3. include  'config.php';
    4. unset($code);
    5. include 'module.php';
    module.php
    Код (Text):
    1. <?php
    2. include 'config.php';
    самым умным человеком себя не считайте =)
     
  22. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    [​IMG]

    Какой во всем в этом смысл? Если к определенным вещам не должно быть доступа, его просто не должно быть. Если он есть, в том или ином виде, то он есть. /кэп_офф.

    з.ы. напомнило случай, как один хм... безопасник при вводе пароля требовал что бы все вышли из помещения. Его не смущал факт того, что всем глубоко плевать на его сверхважные данные )
     
  23. Fumafu

    Fumafu Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    В цитаты рунета однозначно.
     
  24. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    ...
    Код (PHP):
    1. <?php defined('ACCESS') || exit; ?>
     
  25. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Самым и не считаю.

    Добавлено спустя 1 минуту 12 секунд:
    это не ответ на вопрос. Вопрос всё тот же, что мешает человеку инклюдить ЛЮБОЙ файл? =)

    Добавлено спустя 2 минуты 42 секунды:
    вы похоже не понимаете чего-то в последовательности работы скриптов. Ну да ладно. Дело ваше. Просто обязан сообщить вам, раз уж вы тут, а я тут, что ваша защита не работает для тех, кто может скрипты вам на хостинг пихать. Не работает в принципе. То, что вы показали в примере это защита от внешних запросов, а у вас была задача защититься от ваших же разрабов, причем не от всех. И вы закрыли функцию file_get_contents() которая по сути заменяется кучей других функций, включая инклуд, от которого уже так легко не отделаться так или иначе.

    Ну удачи.