很难,每个Session都有一个24位字符的GUID来标识,即该Session的SessionID值,要想截获别人的Session,你最起码得猜出这个SessionID,那绝对是不可能的。--------------------------------
AspNetPager 免费分页控件4.2版发布,同时发布最新源代码,欢迎下载:http://www.webdiyer.com

解决方案 »

  1.   

    Session 保留在服务器,一般不可能给截获,在客户端之间传送时值传送 SessionID ,截获了用处也不大,再说,正如 webdiyer 所说,你要截获 SessionID 也是非常困难的。Session 可以满足一般人的需要,再说,你还可以将数据加密后在保存到 Session 中(但一般不需要这么做)
      

  2.   

    感谢二位的回答第二个问题我更关心一些,因为我要做权限验证,老和数据库交互不好,打算把权限代码存在数据库中,但每次登陆后SESSION中记录,然后通过SESSION核对权限,所以不能,MD5编码,自然也不能加密,如果加密的话,我还不如放数据库中,估计效率还好些!
      

  3.   

    如果需要改是可以的,SESSIONID存放的是一个COOKIE文件,明码的文本文件,但有效的更改是知道另一个正在使用的SESSIONID,然后来替换它。SESSION一般默认20分钟失效,在失效之前,这就是可行的。
      

  4.   

    COOKIE我自然知道,不过我的SESSION是在非COOKIE状态下运行的,也就是SESSION存放在服务器,发送请求的时候带一个SESSIONID带着走,这样的方法,会被篡改吗?
      

  5.   

    其实Cookie也是跟着页面走的,不信你可以用Response.Write(Request.Headers.ToString());看看
      

  6.   

    如果别人可以获得你的数据包,你的session才可能被截获,那么你的请求就会被模拟
    但是篡改是几乎不可能的,不管怎么说,你的session id是需要和服务器保持一致的
    所以说很难截获,session还是很安全的
    用SSL可以完全的解决这个问题,不过速度慢很多了
      

  7.   

    我想在url中来传送SessionId的方法可能比较危险吧。
    另外一个用户要是看到了你的Sessionid,我想完全可以在他的浏览器上复制你的sessionid来发送请求,在服务端就会把这个用户当作你了。要是你已经是登录过的用户,他就也等于登录过了。
      

  8.   

    chnking:你误会我的意思了其实,我担心的问题是,一个用户,能否在服务器不提供正常方法方法(比如登陆的时候会更改SESSION信息,这就称为正常方法)的情况下,修改自己的SESSION的信息,而不是冒充他人的,我担心的是,我在一个用户的SESSION中记录了权限值,但他却把自己的权限值修改了……
      

  9.   

    怎么可能,Session的值只可能在服务端被修改,服务端的程序是你写的,客户怎么可能修改Session的值了。
    客户能作的就是可能修改浏览器发送到服务端的SessionId,如果Sessionid都被改了的话,就不代表这个客户了。
      

  10.   

    如果知道DNS欺骗就不会这么说了。