相关文章导航
  1. Sql Server2005 Transact-SQL 新兵器学习总结之-总结
  2. Flex,Fms3相关文章索引
  3. FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发))<视频聊天,会议开发实例8>

 

在ASP.NET StartKit TimeTracker中由于程序设计上的小失误,我们可以利用这个BUG来达到越权访问aspx页面的能力.

我们都知道该系统定义了三种角色,分别为
Administrator(管理员)
Project Manager(项目管理者)
Consultant(顾问)

只有Administrator角色的用户才可以访问管理信息页面(ProjectList.aspx)

现在我来描述一下错误现象:

现在我有一个管理员的帐户ai_ai@126.com.
我们先用这个帐户登陆,去创建一个Consultant角色的帐户:ai_c@126.com
然后马上关闭浏览器.(注意我这里说的关闭是用MOUSE点击浏览器关闭按钮而不是用程序提供的注销按钮)
再打开浏览器进入登陆页,用帐户:ai_c@126.com登陆系统.
这时我们就可以利用顾问角色的帐户访问管理信息页面
http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=2

这个BUG岂不是和系统角色访问权限相背.


现在让我们来找虫
我们可以看到该系统的登陆用户角色信息是存放在一个COOKIE中的.
数据存放前进行了加密,利用了类FormsAuthentication.Encrypt的静态方法.
该COOKIE的名称在Global中定义为一个常量:
public const string UserRoles = "userroles"
这就是BUG之一

现在我们再看Global中Application_AuthenticateRequest事件中另一段代码:
Response.Cookies[UserRoles].Value = cookieStr;
Response.Cookies[UserRoles].Path = "/";
Response.Cookies[UserRoles].Expires = DateTime.Now.AddMinutes(1);
从以上我们可以得知,该COOKIE的有效时间是一分钟.
这样我们在前一登陆帐户关闭后,一分钟内马上利用另一帐户登陆,这样后面的帐户可以取到前一帐户的角色信息.
因为2个登陆帐户用的是同一个叫userroles的COOKIE
这又是BUG之一

为了解决这个BUG,我们可以对程序越微修改
就是把COOKIE名称唯一化.

在protected void Application_AuthenticateRequest(Object sender, EventArgs e)

在代码
if (Request.IsAuthenticated == true) 
{
后面添加
string UserRoles=Global.UserRoles+Context.User.Identity.Name;
这样可以保证每个登陆帐户的角色信息COOKIE名称不一样.

同时注意还要修改,退出按钮事件 (Banner.ascx.cs中)

代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)private void LogOff_Click(object sender, System.EventArgs e)
        }

 

当然还可以有其他解决办法
例如把登陆用户角色信息数据放到系统的身份验证cookie的身份验票的UserData(Cookie中存储的用户定义字符串)中

具体实现可以参考我的另一文章:
代码阅读总结之ASP.NET StartKit TimeTracker(角色权限)
http://www.cnblogs.com/aierong/archive/2004/12/21/79966.html

谢谢!

收藏与分享

收藏到QQ书签 代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记) 添加到百度搜藏 代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)添加到雅虎收藏 代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记) 代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记) 代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)

RSS订阅我 什么是RSS?

代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)
代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)
代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)
代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)   代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)

东莞.net俱乐部

代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记) 欢迎您的加入

相关文章:

  • 2022-02-24
  • 2021-09-23
  • 2021-06-01
  • 2021-11-25
  • 2021-11-06
猜你喜欢
  • 2021-11-27
  • 2021-10-01
  • 2021-12-13
  • 2021-12-29
  • 2022-01-15
  • 2021-05-06
  • 2021-09-22
相关资源
相似解决方案