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



我把这段代码写成general_view.php:

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

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

  1. 此代码是否存在安全漏洞,例如目录遍历
  2. 如果前面的问题是真的,我想知道将视图包含在另一个视图中的正确方法

谢谢!

不,它与安全性无关,这里只是一种设计模式,实际上建议您保持代码干净,最重要的是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方法,如果您愿意,只需将视图传递给它即可。

否默认情况下,您不能直接访问Code Igniter中的视图。因此,您所说的"$view"是指您希望包含在general_view.php中的任何视图都不能直接访问,即在目录遍历的情况下。如果你还没有为"$view"制作控制器,只需将其包含在general_view.php 中,它就完全安全了

最新更新