HOY*_*HOY 1 asp.net security gridview asp.net-controls
例如,让我们说我有一个gridview列,它有重要的控件,
如果我让它们在常规用户上不可见,并且管理员用户可见,那么它是否安全?
If (Requst.Servervariables.Get("LOGON_USER").Split('\\')[1] == "MyAdminUser")
{
gridview1.columns[0].visible = true;
}
Run Code Online (Sandbox Code Playgroud)
即使可见性设置为false,控件也存储在Viewstate中.视图状态未加密,只是Base-64编码.从理论上讲,可以解析视图状态并提取值,因此它不是100%安全的,但大多数人都很难利用这些弱点并提取值.
对于小事情,这可能是可以做到的,但是如果你要保护真正敏感的数据,我会找到另一种隐藏数据的方法,或者根本就没有它去客户端.对于控件,可以在管理员用户的代码隐藏中动态添加它,而不是将其可见性设置为false.
当然,实践深度防守.
简单地隐藏控件被称为"默默无闻的安全",这根本不是很安全.它是一个有效的附加安全层,但您绝对不应该依赖它(隐藏敏感信息的链接,假设如果您不知道URL,则无法访问它).如果您确实使用它来隐藏链接,那么您仍然需要像链接没有"隐藏"那样谨慎地保护这些页面.攻击者可以通过多种方式找到这种"隐藏"链接.