2010-07-13 33 views
1

我目前在写C使用CGI一个小博客/通用发布系统作为一种业余爱好项目的过程,并在需要的会话管理系统来authentificate授权用户对发帖现在,编辑和类似操作多个CGI程序会话管理通过纯CGI

从几年前的PHP工作中我记得使用超全局变量$_SESSION和一些会话初始化函数。 显然这是不会用纯CGI打交道时,这种方式工作,所以我在一个棘手的情况下就在这里。

思维有点表明,有许多不同的方式做这样的事情...

  1. 保存的IP地址和文件中的属性在那里我可以看到,如果一个特定的IP授权
  2. 同#1,但使用的SQLite数据库(我已经引擎上的SQLite运行,因此就没有额外的开销)
  3. 东西与cookies可能?

而不是全力以赴和后悔是后来...什么好人认为?什么是最有效的(也是最重要的)和可维护的方法?

请注意,我做不是想要得到第三方库文件来为我做所有复杂的事情!我开始这个项目是为了完全自己创建一些东西(如果你在这里忽略SQLite),并且我不想隐藏硬件部分,即使它使一切变得如此简单。我可以只使用Python的,如果我不想折磨自己:)

回答

3

基于Cookie的会话管理是要走的路。您不能仅仅使用IP地址,甚至不使用IP地址+浏览器组合,因为当人们使用代理服务器或NAT后面的服务器会失败。

只需发送浏览器中的哈希值在cookie中,然后验证对你的记录中的散列对于用户来说,如果匹配,你就可以访问这些数据为用户的会话。

考虑增加对散列的到期机制。在安全性和易用性之间存在折衷,因为相同散列对用户有效的时间越长,用户容易受到cookie窃取攻击的时间越长。

到期机制也将使您从数据库中删除过时的会话数据(或者文件,如果你选择这样做。)

+0

谢谢,我只需要决定在哪里保存我的会话现在..也许在我的sqlite数据库,只是为了一致性。 – LukeN 2010-07-13 18:20:45