За последние 24 часа нас посетили 19057 программистов и 1623 робота. Сейчас ищут 772 программиста ...

Опасность вставки кусков html в php

Тема в разделе "PHP для новичков", создана пользователем Netopyr, 8 янв 2017.

  1. Netopyr

    Netopyr Новичок

    С нами с:
    24 дек 2016
    Сообщения:
    15
    Симпатии:
    0
    Добрый всем вечер. Озаботился такой проблемой. Нужно в цикле вывести кусок html с кодом php. Что то вроде этого. Кусок немного побольше, соответственно экранированных кавычек тоже. Удобство в том, что это решает поставленную задачу на все 100.
    Начитался об опасности этого способа. Так ли это? Надо ли пользоваться шаблонизаторами даже для таких небольших участков кода?
    PHP:
    1. <?php
    2. echo "<div class=\"\">
    3.            <div class=\"\">
    4.                <div class=\"\">
    5.                    <div class=\"\">
    6.                        <h3 class=\"\">".$var1."</h3>
    7.                    </div>
    8.                    <div class=\"\">
    9.                        <img src=\"".$var2."\" class=\"\">
    10.                    </div>
    11.                    <div class=\"\">
    12.                        <p>".$var3."</p>
    13.                    </div>
    14.                </div>
    15.            </div>
    16.        </div>";
    Да, забыл написать. Переменные - это SELECT из БД.
     
    #1 Netopyr, 8 янв 2017
    Последнее редактирование: 8 янв 2017
  2. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А можешь нам рассказать про какие там опасности ты начитался в выводе html???

    Вот те лайвхак, чтобы не морочиться с экранированиями, когда это нафиг не нужно:

    PHP:
    1. <?php
    2. echo '<div class="">
    3.            <div class="">
    4.                <div class="">
    5.                    <div class="">
    6.                        <h3 class="">'.$var1.'</h3>
    7.                    </div>
    8.                    <div class="">
    9.                        <img src="'.$var2.'" class="">
    10.                    </div>
    11.                    <div class="">
    12.                        <p>'.$var3.'</p>
    13.                    </div>
    14.                </div>
    15.            </div>
    16.        </div>';
    --- Добавлено ---
    PHP сам по себе шаблонизатор. Для этого и создан.
     
    Netopyr нравится это.
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Не надо такой большой кусок html выводить echo. Выключайте режим php, и пишите нормальный html-код, включая режим php или используя конструкцию <?= ?> для вывода переменных (начиная с версии 5.4 для этого не нужно включать короткие теги)
    PHP:
    1. <?php
    2. /* Какой-то код php */
    3. ?>
    4. <div class="">
    5.            <div class="">
    6.                <div class="">
    7.                    <div class="">
    8.                        <h3 class=""><?= $var1; ?></h3>
    9.                    </div>
    10.                    <div class="">
    11.                        <img src="<?= $var2; ?>'" class="">
    Про опасность вы по ходу просто не поняли, и подразумевались XSS-атаки. Просто пропускайте все данные, которые ранее передал пользователь через https://secure.php.net/htmlspecialchars
     
    denis01, MouseZver и Fell-x27 нравится это.
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @Netopyr да мы все знаем про это, давай уже расскажи тем, кто не знает :D

    ЗЫ: расскажи конкретнее, что ты имеешь в виду.
     
  6. Netopyr

    Netopyr Новичок

    С нами с:
    24 дек 2016
    Сообщения:
    15
    Симпатии:
    0
    Блин. Забыл добавить, лайфак для дЭбилов :mad:
    Спасибо.
    Вышеуказанное XSS. На соседнем форуме нашел тему, где еще один новичок спрашивал подобный вопрос, а ему дружно все сказали ничего самом не трогать, а пользоваться только шаблонизаторами.
    Решил параллельно с ликбезом заниматься вопросами безопасности.
     
    #6 Netopyr, 9 янв 2017
    Последнее редактирование: 9 янв 2017
  7. igordata

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

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

    ага. отличный совет. нифига только не понятный почему и какими, т.е. по факту он не работает.

    Плюшка шаблонизатора в том, что он по-дефолту всё подряд экранирует. А что такое экранировать?
     
  8. Netopyr

    Netopyr Новичок

    С нами с:
    24 дек 2016
    Сообщения:
    15
    Симпатии:
    0
    Как я понимаю, - чтобы зловредный скрипт не подсунуть в сервер, и чтобы он его не выполнил.

    Во - тема которую я смотрел.
    http://phpclub.ru/talk/threads/Вставка-html-в-шаблон-php.82644/
     
  9. Fell-x27

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

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

    Уплачиваем оверхед на коммуникацию двух серверов, но, с другой стороны, получаем увеличение эффективности использования ресурсов за счет перекладывания проблемы медленного клиента на плечи легковесного решения.
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну допустим у нас есть чудо-функция которая прибивает слово script и в таком случае никогда никакой скрипт не попадёт на страницу. Можно считать проблему решённой?
     
  11. Lihto87

    Lihto87 Новичок

    С нами с:
    26 дек 2016
    Сообщения:
    3
    Симпатии:
    0
    Хмм, так то следует из этой логики- что и нужные вещи не интерпретируются. Или нет? Если избирательно, то мы решаем только один мнханизм внедрения, а есть куча доугих?! Чет меня совсем запутали!
     
  12. Netopyr

    Netopyr Новичок

    С нами с:
    24 дек 2016
    Сообщения:
    15
    Симпатии:
    0
    Дык это, можно сразу ответ? Ничего не понимаю
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не, я старый, и мне скучно.
    либо думай и понимай, либо иди читай и зубри. =)
     
    SamyRed нравится это.
  14. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Ящитаю в наше время так делать это быть откровенным уебаном, если конечно нету очень весомых оправданий на тему волшебных расширений апача или логики завязанной на хтацессах
     
  15. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а это 99% на shared хостингах нужно
     
  16. Fell-x27

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

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

    При этом мы имеем доступ к волшебным расширениям апача и хтаццессам, да. По сути, нет разницы, куда нжинкс проскирует вызов - хоть на fpm, хоть апачу, хоть в параллельное измерение. Архитектура серверная при этом одинаковая в любом случае. Как не поверни, это все равно "пхп-сервер с реверс-прокси".

    Другое дело, что кто-то где-то когда-то слышал, на какой-то псевдоэлитной тусовке типа очередного срача на хабре, что апачи говно и пользоваться им - маргинальный акт. При этом, не вдаваясь в подробности, ухватывая только верхушку тезиса. Принимая его на веру как религиозный постулат, без проверок и сомнений.

    А на деле окажется, что не апачи говно, а выставлять апач наружу - моветон. Потому что:
    1) Апач, отдающий все, включая статику, это ппц как накладно, особенно учитывая, что этой статики могут быть чертовы мегабайты картиночек, которые отдавать апачем ну совсем уж расточительно, учитывая, что он при этом раскочегаривает все, что у него есть, включая PHP-машину и кучу не нужных в данный момент модулей.
    2) Апач очень не любит медленного клиента и может "зажевывать" отдачу.
    3) Дочки апача выжираются долгими коннектами как нефиг делать. Положить сервер можно даже с телефона.

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

    Это уже потом хипстеры от IT превратили серверную архитектуру чуть ли не в религию, постулируя "надо отказаться ото всего, кроме минимального минимума!!1". А потом эти балбесы со слезками гуглят альтернативы папачевых модулей под нжинкс, трансляторы хтаццесов в нжиновые конфиги и тд. Как веганы, блин, гуглящие "чем заменить животные белки", но, при этом, искренне считающие себя травоядными, которым эти белки не впились.

    А вообще есть ультимативное решение - LiteSpeed server. Надо будет как-нибудь опробовать...
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Летят в самолете ворона и волк.
    Ворона подзовет стюардессу, наорет, что та офца страшная…
    Потом попросит кофе и выливает его на стюардессу…
    Волк сидит, тихо завидует.
    А потом спрашивает у вороны, мол, можно и ему так же повыебываться.
    «Отчего же нет?! » – отвечает птица…
    Проходит 10 минут, стюардесса уже в истерике просит капитана самолета
    что-нибудь с хулиганами.
    Тот берет, и выбрасывает волка с вороной из самолета…
    Летят они, волк спрашивает:
    - Что дальше? Как приземляться будем?
    - У тебя крылья есть? – спрашивает ворона.
    - Нет!
    - Ну а хули ты выебывался?!