问题1:看图片,我这样认为:PHP在建立会话后,会在客户端cookie中写入sessionid,其后每次发送http请求后都会发送该sessionid来验证身份,但是划线部分说使用隐藏表单或查询字符串传送回话令牌,有这个必要吗?不是说会请求发送会自动发送sessionid吗?还有最后一句http cookie才是实现这一目地的常规方法更摸不着头脑了。
问题2:如果我从别人的机器上获得对方登录某个网站的会话ID,那么我是否可以通过伪造该ID在他的帐号上进行操作呢?不懂得是获得对方id后,是否还需要进行登录,如果ID就是对一个账户的确定的话就没必要登录了吧?
问题3:我今天学习THINKPHP的时候有个问题请教下:create方法会自动自动完成了很多功能,但是目前我学到的是表单的name属性要和数据库中的字段名保持一致,那这样不就是暴露了数据库的字段信息了吗?这样做很危险吧,我想应该可以将表单的name映射成数据库的字段吧,对吗?

解决方案 »

  1.   

    1.发送session id的方法主要针对有些浏览器禁用cookies,例如“隐私模式+禁用cookies”
    php不使用session相关语句是不检查session id的2.可以,有session id可以免登录,前提是该id还有效3.未用过框架,pass
      

  2.   

    启用 session 后,SessionID 就会当做身份识别标志传来传去
    token 的作用是加强一下身份识别
    如果把 token 放在 cookie 中,那么也会和 SessionID 一样传来传去。如果不及时清除,则失去了加强身份识别的作用
    分析回传的 http 头,很容易就获得了将保存于 cookie 的 token。而将 token 放在表单中,至少你还需分析一下html源码。从而增加伪造表单的难度将表单对象命名为对应的字段名,可给代码书写带来很多便利。并没有什么危险,知道了字段名并没有给攻击带来便利,因为你的字段名可能是毫无意义的字符组合当然你可以在做一个对照表来映射字段,只不过是增大运行开销而已
      

  3.   

    1.分页等无保密性的简单数据就经常用url参数,这样的页面多了
    2.你所说的情况就是著名的session劫持
    3.要想安全可以用ssl
      

  4.   


    首先谢谢版主的回答,其次我又产生了疑惑:隐藏域的token和sessionid不是一回事吧?如你所说的如果我想伪造表单顶多也就是加上隐藏域的字段值,只不过就是多了一道查看源码的隐藏域的工序,对吗?
      

  5.   

    是的。如果 token值 是由 js 动态设置的,你就更难获得了
    如果每次都需要手工分析出 token,那就直接填表单提交就是了。何必要用程序?费时费力