将应用程序导航状态保存在会话安全风险中?

时间:2011-12-22 19:54:04

标签: php security codeigniter session

我发现当我正在开发应用程序时,我在使用不同的方法时必须保持当前导航状态或url /查询字符串值。

我正在使用codeigniter框架和网址重写

例如:

我通过url使用类和方法:

example.com/class/method/item_id

所以说我使用的方法在我的应用程序中加载新的视图或导航状态

example.com/class/viewpage/10

现在说我想在刚加载的页面上运行另一种方法。好吧,我不能使用处理所有请求的相同通用代码,因为运行新方法将取代viewpage方法。

example.com/class/newmethod

当然有很多编程解决方案,但我已经开始在会话中保存导航状态而不是类中的私有变量。

$_SESSION['currentview']  = $this->_view;

这没关系。是否有任何我不知道的安全问题,或者$_SESSION ...

的目的

我是一名自学成才的程序员,所以如果这是一个愚蠢的问题,我会提前道歉。

1 个答案:

答案 0 :(得分:1)

我不会使用$ _SESSION来存储导航状态。应使用所使用的方法通知导航状态。我通常做的是在控制器类的构造函数方法中设置当前的nav状态。

所以在你的控制器中:

class Items extends APP_Controller {

  function Items(){

    $this->current_nav = 1;
  }

  function viewpage(){

    $this->load->view('page', array('current_nav' => $this->current_nav))
  }
}

为该控制器的所有方法设置导航的状态。然后在你看来:

<ul id="nav">
  <li <?= $current_nav == 1 ? 'class="active"' : '' ?>>Nav 1</li>
  <li <?= $current_nav == 2 ? 'class="active"' : '' ?>>Nav 2</li>
  <li <?= $current_nav == 3 ? 'class="active"' : '' ?>>Nav 3</li>
</ul>