隐藏控件作为网络安全形式,建议更好?
我正在开发一个网站(用C#开发的ASP.NET),这个网站传递给我。 当我在网站上工作时,我注意到网站的很多部分都有这种类型的代码:
EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...
这通常都是在网站的代码隐藏中完成的(在Page_Load方法中)。 本质上,这是为了防止未登录的用户访问组件(该网站的规则是,未登录的用户在登录前应该无法看到网站的任何部分)。 上面的方法工作...但是,必须始终检查用户是否已登录,然后转到所有这些组件的正确状态,这似乎相当昂贵。
有没有不同的方式可以解决这个问题。 仅仅从思考/研究的角度来看,我想也许有一种方法可以在用户未登录的情况下重定向回主页。甚至进一步,我可以扩展一个基本页面,以便为任何用户页面扩展了基本页面。 但是,我在这方面的知识是有限的,所以我的建议可能无效。
什么可以建议? 有什么更好的? 有什么好的吗?
我们在工作中做了很多。
我们完成此任务的方式是创建一个从System.Web.UI.Page继承的BasePage类。 然后你重写OnInit,调用base.OnInit,并添加代码来检查登录用户。 如果用户未登录,请将其重定向到登录页面(该页面不会从BasePage继承)。
然后,在需要保护的每个页面上,将页面更改为从BasePage继承。
与上面womp所说的相反,如果你写了Response.End(); 重定向后,即使继续处理页面的其余部分,速度也会更快!
希望有所帮助。
有一个loginview组件是一个具有匿名视图,认证视图和特定角色视图的面板。 这样做很容易。
http://www.creativeui.com/2007/10/05/net-membership-part-ii-loginview/
发出重定向要比在许多控件上设置可见标志要贵很多很多个数量级。
如果您的页面同时允许匿名访问和登录访问,那么重定向也会要求您以其他方式允许匿名访问,可能是通过构建第二个版本的页面。
费用问题实际上只是一个旁观,它可能根本就没有关系。 要回答你的主要问题,不知道更多关于你的应用程序的架构,我会认为这两件事情都是不可取的。 将控件设置为Visible = false的优点是没有任何东西会呈现给不可见控件的输出流,但它们仍然可以与服务器请求进行交互。
在不了解页面需求的情况下,很难建议替代方案。 正如其他人所提到的,如果隐形控件根本不参与匿名用户,那么LoginView可能会满足您的需求。
链接地址: http://www.djcxy.com/p/44141.html上一篇: Hiding Controls as a Form of Web Security, Suggestions for Better?