前提LAMP架构 中大型集sns与电子商务额于一体网站 (电商涉及支付)需要制定一个cookie/session方案,我有这么几点疑问:
1. 什么情况下才需要考虑session存入mysql,也就是把session存入mysql是为了解决什么问题
2. 如果存表是不是也就意味着改为每次都是读表来登录验证,那是不是mysql性能又变成了个大问题(还要考虑锁表、并发等问题)。
3. 读表如果只是为了实现跨域,那使用单点登录开源项目,比如Yale CAS是不是自身就解决了此问题,不用而外存表来实现跨域身份验证了
4. 所谓session存表更安全,安全在哪里,丢session的情况似乎从未遇到。
5. 关于cookie/session方面的架构还有什么其它实际可行的方案吗?

解决方案 »

  1.   

    1。也许服务器上不支持session,php自带的session是需要有文件保存的,可将IO换成内存加快速度(见2)
    2。应使用 memory 类型的表,即内存表,数据都在内存中,但要注意的是重启数据库数据就清空了,即session丢失
    3。以上两条即可证明不只是为了实现跨域,跨域的方法有很多
    4。安全都是相对的,比如文件系统或者数据库设置都可能导致session信息泄露,当然如果你自己做session那么在验证session上你就可以自己修改
    5。session一般要有一个cookie来保存session的id,当然若要支持没有cookie的情况就要重写url,类似这样的地址你应该见过index.php;PHPSESSION=sdfpw3985yrhrnfworty948tyh498y或者index.jsp;JSESSION=sfhq294fyh9wy4t94,这里面保存了session,如果你自己处理的话会增加工作量,同样带来的是可定制性
      

  2.   

    5。这里面保存了session -> 这里面保存了session的id,少打了个id
      

  3.   

    当需要自行控制 session 的行为时
      

  4.   

    非常感谢白水山言兄,我这两天定方案搜了一些信息发现似乎主要原因如出现了session丢失、跨域、session渗透。但丢失session从来未遇到过。。跨域可以单点登录解决、session渗透还没深入研究过。
    P.S 服务器会支持session所以给我感觉似乎直接用session还是可以的,没有特殊情况似乎都不需要考虑额外的存表或者存文件等等。。
      

  5.   


    对, 多台服务器共用一个session时, 考虑用表来保存
      

  6.   

    同一ID不能两台电脑同时登录,也需要用表来存session 才行吧
      

  7.   


    我刚还在看你那篇php漏洞的帖子呢 这就看见你了 嘿嘿两台电脑同时登陆这个没有问题。
      

  8.   

    是不是大家还是基本都直接用服务器session,没有去做特别的处理机制?
      

  9.   


    上面都说的比较清楚了  多台服务器的时候,可以考虑用表存储session