隐藏控件作为网络安全的一种形式,建议更好?

Jas*_*Cav 7 c# asp.net security

我正在一个网站(用C#开发的ASP.NET)上传递给我.当我在网站上工作时,我注意到网站中有很多类型的代码:

EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...
Run Code Online (Sandbox Code Playgroud)

这通常都是在站点的代码隐藏中完成的(在Page_Load方法中).本质上,这是为了防止未登录的用户访问组件(该站点的规则是未登录的用户在登录之前不应该看到该站点的任何部分).上面的方法工作 ......但是,总是检查用户是否已登录然后翻转到所有这些组件的正确状态似乎相当昂贵.

有没有一种方法可以解决这个问题.只是从思考它/研究,我想也许有一种方法,如果用户没有登录,我可以重定向回主页.更进一步,我可以扩展一个基页,这将为任何扩展基页的页面.但是,我对这方面的了解有限,所以我的建议可能不起作用.

有什么可以暗示的?还有什么更好的?有什么好的吗?

Fal*_*tar 2

我们在工作中经常这样做。

我们实现此目的的方法是创建一个继承自 System.Web.UI.Page 的 BasePage 类。然后重写 OnInit,调用 base.OnInit,并添加代码来检查登录用户。如果用户未登录,则将其重定向到登录页面(该页面不会从 BasePage 继承。)

然后,在每个需要保护的页面上,只需将页面更改为从BasePage继承即可。

与上面所说的相反,如果你写 Response.End(); 重定向后,甚至继续处理页面的其余部分也会快得多!

希望有帮助。