是否存在安全漏洞,包括其他视图中的视图

时间:2018-12-15 05:40:21

标签: php codeigniter security

我将此代码编写为general_view.php:

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

关于此代码,我有两个问题。

  1. 此代码是否会发生安全漏洞,例如目录遍历?
  2. 如果上一个问题是对的,我想知道将视图包含在另一个视图中的正确方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

不,这与安全性无关,这只是一种设计模式,实际上,建议采用某种方式保持代码整洁,最重要的是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');

现在我们有了一个模板,可以像下面这样创建其部分headerfooterviews/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方法,然后将视图传递给它。

答案 1 :(得分:0)

否默认情况下,您不能直接在Code Igniter中访问视图,因此,如果遍历目录,则可能无法直接访问要在general_view.php中包括的任何视图的“ $ view”。如果您还没有为“ $ view”创建控制器,只需将其包含在general_view.php中,它就是完全安全的。