首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Session的初学者有关问题

2012-02-01 
Session的菜鸟问题//登录页面窗口判断如下:if(管理员登录验证通过)Session[ adminID ] admin //那么

Session的菜鸟问题
//登录页面窗口判断如下:
if(管理员登录验证通过)
Session[ "adminID "]= "admin ";


//那么其它需要管理员权限的窗口是不是可以这样:
if(Session[ "adminID "]!=null)
执行功能;
else
response.redirect( "Login.aspx ");


问题:
上面的验证有没有安全漏洞?
据说Session是放在Cookie里头的,那么用户如果自己在Cookie里头设置adminID的值,那不是就挂了?任何人都可以当管理员?
对Session了解不多,请大侠指教!谢谢了。

[解决办法]
你没有理解Session的工作原理...

当生成一个Session时,服务器会在内存中维护这个Session变量,并产生32位(64位)唯一SessionID,然后这个id通过Set-Cookie头信息发给浏览器,于是浏览器就在Cookie头信息中保存SessionID.

当浏览器与服务器交互时(比如你点了一个链接),浏览器会把SessionID发回给服务器,服务器查看这个SessionID,找出对应的Session变量值.

Cookie与Session的不同就在于一个变量值是保存在客户端,一个是保存在服务器端.

因为Session在客户端就一个id而已,并没有实际值,所以不用担心会被更改...

当然,如果别人通过嗅探器,获取了你的SessionID,那么他可以盗用你的SessionID来与服务器通信,为了防止这种情况,你得采用SSL协议(Https).

伪造Session一般不可能,现在的Web服务器,Apache,IIS基本都不可能被伪造SessionID.

热点排行