Существуют ли уязвимости в системе безопасности, включая просмотр в другом представлении - PullRequest
0 голосов
/ 15 декабря 2018

Я написал этот код как general_view.php:

<!doctype html>
<html>
    <head>
        <!-- Header section omitted -->
    </head>
    <body>
        <main>
            <?php include $view; ?>
        </main>
    </body>
</html>

У меня есть два вопроса об этом коде.

  1. Имеет ли этот код уязвимости безопасности, например, обратный путь в каталогах?
  2. Если предыдущий вопрос верный, я хочу знать, как правильно включить представление в другое представление.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Нет, это не имеет ничего общего с безопасностью, это просто шаблон проектирования, и на самом деле рекомендуется как-то содержать ваш код в чистоте и, самое главное, DRY ( Не повторяйте себя ).и вы можете создать мастер-шаблон, как вы пытались сделать здесь, вот так: view/templates/master_view.php

$this->load->view('layouts/header');
echo $body; // we will make init it in controller
$this->load->view('layouts/footer');

Теперь, когда у нас есть шаблон, давайте создадим его части header & footer следующим образом: views/layouts/header.php

<!doctype html>
<html>
    <head>
        <!-- Header Assets -->
    </head>
    <body>

views/layouts/footer.php

        <!-- Footer Assets -->
    </body>
</html>

Теперь в вашем контроллере вы можете использовать этот мастер-шаблон следующим образом:

$data = array();
$data['body'] = $this->load->view('your_view_for_current_method', '', TRUE); // TRUE here to generate it as a string
// Now load the template
$this->load->view('templates/master_view', $data);

Вы можете переместить егок вашему MY_Controller и создайте метод render_view, если хотите, и просто передайте ему представление.

0 голосов
/ 15 декабря 2018

Нет По умолчанию вы не можете получить доступ к представлениям непосредственно в Code Igniter. Поэтому «$ view», под которым вы подразумеваете любые представления, которые вы хотите включить в ваш general_view.php, может быть недоступен напрямую, как в случае обхода каталога.Он полностью безопасен, если вы не создали контроллер для $ view и просто включили его в general_view.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...