- 浏览: 81998 次
- 性别:
- 来自: dg
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
在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中)
{
FormsAuthentication.SignOut();
string UserRoles=Global.UserRoles+Context.User.Identity.Name;
// Invalidate roles token
Response.Cookies[UserRoles].Value = "";
Response.Cookies[UserRoles].Path = "/";
Response.Cookies[UserRoles].Expires = new System.DateTime(1999, 10, 12);
Context.User = null;
Response.Redirect("Default.aspx", false);
}
当然还可以有其他解决办法
例如把登陆用户角色信息数据放到系统的身份验证cookie的身份验票的UserData(Cookie中存储的用户定义字符串)中
具体实现可以参考我的另一文章:
代码阅读总结之ASP.NET StartKit TimeTracker(角色权限)
http://www.cnblogs.com/aierong/archive/2004/12/21/79966.html
谢谢!
最后修改于2005年4月18日
发表评论
-
图片问题?
2004-06-12 00:58 644图片问题? 例如我有一个ASP.NET工程在目录C:\BBS下 ... -
用Javascript在客户端实现遍历datagrid,DataList控件,像MSN中的全选
2004-07-04 21:56 1455刚刚看了..NET中遍历DataList控件,像MSN中的全选 ... -
ASP.NET状态管理之一(概括篇)
2004-07-14 00:50 670每次将网页发送到服务器时,都会创建网页类的一个新实例。在传统的 ... -
ASP.NET状态管理之二(查询字苻串QueryString)
2004-07-14 01:25 826查询字苻串是追加在URL后的数据(也是我常用的)例如:http ... -
ASP.NET状态管理之三(隐藏域HiddenField)
2004-07-14 01:50 2243ASP.NET 允许您将信息存储在 HiddenFiel ... -
ASP.NET状态管理之四(暂存状态HttpContext.Items)
2004-07-14 17:47 1073ASP.NET提供一个类System.Web.HttpCont ... -
ASP.NET状态管理之七(其他物理数据存放媒体)
2004-07-15 23:25 634ASP.NET状态存储还可以存放在数据库,XML文件,文本文件 ... -
ASP.NET状态管理之六(缓存Cache)
2004-07-15 23:44 1508ASP.NET 提供一个功能完整的缓存引擎,页面可使用该引擎通 ... -
Web.config文件中</appSettings>节点的配置数值读取的2种方法,哪种更快?
2004-10-18 09:37 2411<appSettings> <add key ... -
准备精读开源的.NET代码,希望能坚持
2004-12-08 12:53 1018近来无事,把开源的.NET全部找出来,准备精读。 阅读同时想把 ... -
代码阅读总结之ASP.NET StartKit Commerce
2004-12-20 16:47 844ASP.NET StartKit Commerce简单 ... -
asp.net能实现身份认证的EMAIL发送方法(c#版本)
2004-12-28 11:15 4911public void sendMail() ... -
代码阅读总结之ASP.NET StartKit TimeTracker(应用程序路径之处理笔记)
2005-01-24 17:34 666在开发中我们为了整个程序目录结构清晰化,望望会建立许多不同的文 ... -
代码阅读总结之ASP.NET StartKit TimeTracker(数据绑定之困惑笔记)
2005-01-24 18:00 693以前在项目中数据绑定一直用<%# %> 今天在A ... -
Asp.net未处理异常的2种解决方式(个人总结篇)
2005-02-21 15:34 857Asp.net中引发未处理的异常时,我们怎么处理。我总结了2种 ... -
代码阅读总结之Fitch and Mather 7.0(资源文件Resource随笔)
2005-04-21 18:03 694在Fitch and Mather 7.0中利用了大量的资源文 ... -
代码阅读总结之Fitch and Mather 7.0(自定义字符串缓存页)
2005-10-18 13:29 786前段时间工作比较忙,没时间读代码,这几天有空,正好又来静读代码 ...
相关推荐
【标题】"网站框架(基于ASP.net startkit)" 指的是一个使用ASP.NET StartKit构建的船务公司网站的基础架构。ASP.NET StartKit是由微软提供的一个开源项目模板,用于快速搭建Web应用程序,特别是针对ASP.NET Core平台...
### C51 StartKit 学习板知识点解析 #### 一、C51 StartKit 学习板概述 C51 StartKit是一款专为初学者设计的51单片机及C51语言入门学习系统,由西安电子科技大学测控技术与仪器教研中心研发。该学习板采用低成本的...
在本文中,我们将深入探讨"Fusion Startkit"高级实验例程,这是一套专为Actel FPGA(现场可编程门阵列)设计的实践教程,适用于周立功Fusion Startkit开发板。此套例程旨在帮助用户在Libero IDE 8.0环境下提升FPGA...
【StartKit串口调试助手使用说明1】 StartKit串口调试助手是一款专为物联网设备调试设计的工具,它提供了一种简单易用的界面来配置串口通信参数,并且具有丰富的菜单功能,如日志管理和AT命令操作。下面将详细介绍...
周立功Fusion startkit资料的实验例程的基础实验部分,libero ide8.0版本下运行
周立功Fusion StartKit是一款专门用于FPGA(Field-Programmable Gate Array)开发的实验平台,旨在帮助用户快速理解和实践FPGA设计。ADC(Analog-to-Digital Converter)是该开发板上的一个重要组件,它能够将模拟...
startKIT 开发板示例 最新发布: 1.2.0rc0 维护者: 达维尔克斯莫斯 描述: startKIT 示例程序 所需软件(依赖项) sc_i2s ( :xcore/sc_i2s) sc_i2c ( :xcore/sc_i2c) sc_slicekit_support ( ) sw_audio_...
【基于开发板的开发指南StartKit_NB_V1.0】是中国电信集团公司于2019年9月发布的一份详细指导文档,旨在帮助开发者利用特定的开发板进行NB-IoT(窄带物联网)通信卡的开发工作。该文档主要分为六个部分,包括清单...
周立功公司是一家知名的电子技术企业,提供各种FPGA开发工具和解决方案,包括Fusion StartKit开发板。这个"electric current"标签的实验例程是针对FPGA开发板上的电流监控功能进行的,旨在帮助开发者学习如何利用...
### ProASIC3 StartKit开发板原理图解析 #### 核心概述 ProASIC3 StartKit是一款专为Actel公司的ProASIC3系列FPGA设计的开发板。该开发板旨在为工程师提供一个易于使用的平台,以便进行原型设计、评估以及开发基于...
周立功是一家专注于嵌入式系统与FPGA技术的公司,他们推出的Fusion StartKit是专为FPGA初学者和开发者设计的一款开发板,集成了丰富的功能和实验例程,帮助用户快速上手FPGA应用。 本实验例程重点围绕"Flash Memory...
- 使用“Add...”按钮将用户添加到权限列表,并根据角色赋予不同权限。 - starter拥有只读权限,Tester1同样,Developer1和Manager1具有读写权限。 - 可以通过Groups管理多个用户,简化权限分配。 5. **...
可以将用户添加至特定代码库,并根据角色为其设定不同的访问权限。例如,新入职的员工(如用户`starter`)通常只拥有读取权限;测试人员(如用户`tester1`)也需要读取权限但通常不参与编码;而开发者(如`Developer...
总结,VisualSVN Server提供了一种有效的方式来管理和控制项目代码版本,而TortoiseSVN作为客户端工具,使得开发者能够方便地进行代码签入、签出和版本控制。通过合理的权限分配,团队成员可以协同工作,确保代码的...
- 如果遇到权限问题,如无法签入或签出代码,检查用户在`VisualSVNServer Manager`中的权限设置。 - 调整相应用户的权限,确保其拥有正确的访问级别。 **2. 客户端连接问题** - **连接失败**: - 如果...
ACTEL A3P StartKit是一款基于ACTEL A3P1000 FPGA的开发套件,为FPGA设计者提供了一站式的硬件和软件开发环境。这个开发套件旨在简化A3P1000 FPGA的评估、学习和设计过程,帮助工程师快速实现其创新项目。其中包含的...