За последние 24 часа нас посетили 50497 программистов и 1690 роботов. Сейчас ищут 1045 программистов ...

PinPIE

Тема в разделе "Прочее", создана пользователем igordata, 27 мар 2016.

  1. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я разродился конфигами для апача.

    http://pinpie.ru/en/manual/server-configuration

    но так и не понял, каким образом можно обеспечить запрет запуска пхп-файлов напрямую на конфигах, у которых не отдельно статика отдаётся, а кучей вместе с пхп. Это небезопасно.

    Нужно отдавать статику отдельным конфигом.
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @igordata может PHP файлы вынести из documnet root выше по уровню, которые не надо запускать
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если разделять статику и скрипты, то да. Несомненно. Я именно так и поступаю. Просто печально это, что в 21 веке нет какой-нибудь малюсенькой галочки типа "похапе не отдавать. точка."
     
  4. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Что значит "статика отдается не отдельно, а кучей вместе с пхп"?
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    лежит в тех же папках, и тупо отдаётся =)
     
  6. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В чистом виде, как исходники чтоль? Можно пример? Или я туплю, или ты хреново объясняешь.

    Просто от обычного прямого доступа к подключаемым файлам всю жизнь работало:
    1) Выставить в точке входа некую константу.
    2) в подключаемых файлах прописать в начале самом:

    PHP:
    1. defined('MYCONST') or die('Иди нахер');
     
    denis01 нравится это.
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это костыль.
     
  8. Fell-x27

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

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

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, это адющий костыль.

    Не. Я просто разделяю на две папки статику и бэкэнд. И всё.
     
  10. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Карочи, не изобретай велосипеды, юзай константу запирающую. Это не костыль, а бестпраксис. Юзается повсеместно. Просто подключаемый файл не будет позволять себя исполнять, если не является частью системы.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Во-первых, константы это костыль, т.к. можно без этого обойтись. То, что он юзается повсеместно, это не аргумент.
    Во-вторых, я не изобретаю велосипеды, а разношу бэкэнд скрипты и фронтэнд статику. И при таком подходе нет нужды трахаться с костылями. :D
     
  12. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
     
  13. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    http://stackoverflow.com/questions/...o-all-php-files-in-a-directory-using-htaccess
     
  14. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    название у проекта забавное
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так. вроде вот такой конфиг прокатил:

    Код (Text):
    1. <VirtualHost *:80>
    2.     ServerName pintest.ru
    3.     DocumentRoot "/var/www/pintest.ru"
    4.     <Directory "/var/www/pintest.ru">
    5.         RewriteEngine On
    6.         RewriteCond %{REQUEST_FILENAME} !-f
    7.         RewriteCond %{REQUEST_FILENAME} !-d
    8.         RewriteRule ^.*\.php$ - [F,L,NC]
    9.         RewriteRule . index.php [L]
    10.     </Directory>
    11. </VirtualHost>
     
  16. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    блин, а так он файлы не отдаёт.
    --- Добавлено ---
    я не хочу делать так, чтобы *МОИ* файлы не работали без других *МОИХ* файлов. Я хочу, чтобы любые php файлы не запускались напрямую. Канэц. Решение с константами не подходит.
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @igordata как написал @denis01 можно вынести всё выше индексного файла, в т.ч. папку pages, templates и т.д в твоем случае.
     
  18. Fell-x27

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

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

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Это единственный способ? Я пользуюсь разнесением в разные папки, да. Но вдруг есть возможность отдавать все файлы, кроме пхп, а все урлы, если это не файл и не пхп - рулить на индекс.
    --- Добавлено ---
    блин
    есть композер. есть библиотеки. Я не могу и никто не может гарантировать, что кто-то где-то эту константу не забудет. Поэтому я и ищу способ предотвратить прямой запуск ЛЮБЫХ пхп файлов.
     
  20. Fell-x27

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

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

    Гарантии закрытия исходников константой, собственно, можно нарулить программно, если они так уж нужны. Но это избыточная логика. А еще можно просто не считать конечного пользователя, если он взялся дописывать что-то под пинпай, дураком, который не разберется с такой фигней.
     
  21. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну если он не будет использовать апач, то и конфиг для апача он использовать не будет. Я не вижу смысла в твоем сообщении. Это какая-то саморешаемая проблема.

    ну я пока не разобрался, хочу разобраться, чтобы пользователю не пришлось это делать. Но видимо придётся забить.
     
  22. Fell-x27

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

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

    Я понимаю, что ты хочешь прям прям изящно-красивое решение. Но они не всегда есть. Тут у нас два стула - или охренеть изящно в своем великолепии, или для широкого пользователя. На двух сразу не усидишь.
     
  23. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Следующее правило
    Код (Text):
    1. RewriteCond %{REQUEST_URI} .*\/.*\.php$
    2. RewriteRule . index.php [L]
    делает ререайт с php-файлов из вложенных директорий на index.php, но из него нельзя убрать слеш, иначе сам индекс не будет работать. Впрочем, можно исключить индекс с помощью регулярки, но хз насколько разумно запрещать пользователю свои скриптики запускать. Можно наоборот, перечислить в.htaccess директории, используемые PinPIE.
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    всё, короче решение забить, с которого я начал свои поиски, было правильным. Я к нему возвращаюсь. Каждый пусть варит сам своё варево. Константы я пихать не буду тоже. =)
     
    denis01 нравится это.
  25. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    denis01 нравится это.