代码之家  ›  专栏  ›  技术社区  ›  LukeN

通过纯CGI进行会话管理

  •  1
  • LukeN  · 技术社区  · 14 年前

    我目前正在写一个小博客/通用的发帖系统,使用C语言中的CGI作为一个爱好项目,现在需要一个会话管理系统来认证授权用户的发帖、编辑和类似的操作。 多个CGI程序

    从多年前使用PHP开始,我记得使用了超全局变量 $_SESSION 以及一些会话初始化功能。 明显地 在处理纯CGI的时候,这是行不通的,所以我现在的处境很棘手。

    一点思考表明,有很多不同的方法可以做到这一点……

    1. 将IP地址和属性保存在一个文件中,在该文件中我可以查看特定IP是否被授权。
    2. 与1相同,但使用的是sqlite数据库(我的引擎已经在sqlite上运行,因此不会有额外的开销)
    3. 有没有饼干?

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

    请注意我知道 想让第三方诽谤为我做所有复杂的事情!我开始这个项目是为了完全由我自己构建一些东西(如果您忽略了这里的sqlite),我不想隐藏硬部分,即使它使所有的事情都简单得多。如果我不想折磨自己的话,我可以用巨蟒。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Vinko Vrsalovic    14 年前

    基于cookie的会话管理是一种可行的方法。你不能仅仅使用一个IP地址,甚至IP地址+浏览器组合,因为当人们使用代理或在NAT之后,这将失败。

    只需在cookie中向浏览器发送一个哈希,然后根据用户的记录验证哈希,如果匹配,则可以访问该用户会话的数据。

    考虑为哈希添加到期机制。在安全性和易用性之间存在一种权衡,因为同一哈希对用户有效的时间越长,用户就越容易受到cookie窃取攻击。

    到期机制还允许您从数据库(或文件,如果您愿意的话)中删除过时的会话数据。