我正在考虑为一个ASP.NET应用程序创建一个诊断页面,这个页面主要用于管理,以获取有关诊断问题的应用程序的更多信息。
该页面可能包含的信息示例:
中很有用
从安全的角度来看,该页面中的某些信息可能是敏感的。如果您以前做过这类页面,那么您在访问此页面时设置了什么样的安全性?
编辑:
我应该添加-偶尔它可能是有用的看到这个页面,同时作为一个特定(即真实的)最终用户登录。例如,一个问题只能在以特定用户身份登录时才能再现。能够看到该用户的诊断页面可能是有用的。知道当前会话ID可能有助于调试。
编辑2 :
我开始认为这个诊断页面实际上应该是两个不同的页面。一个用于显示所有用户相同的内容(例如数据库名称、CLR版本),另一个用于可能随会话而变化的内容(例如浏览器信息、会话ID)。然后,您可以更多地锁定第一页的安全性。
发布于 2010-05-06 00:46:36
是的,我以前添加过这类页面(并且发现它很有用)。安全性非常简单:页面包含一个密码表单。服务器端代码根据已配置的值检查此密码,如果正确,则显示真实内容,并在用户会话中设置一个值,说明他们已作为开发人员进行身份验证,以便下次不会再次提示他们。
我想,由于页面的URL没有在任何地方发布,所以也存在一些不知名的安全性。
我也很小心不要在页面上透露任何真正敏感的东西。例如,它允许查看我们的应用程序配置值,但是屏蔽了其中包含“密码”的任何内容--嘿,如果我们真的想查看密码,我们可以打开一个远程桌面会话到服务器。
发布于 2010-05-06 00:58:26
还有其他几种方法可以做到这一点:
如果您的web应用程序具有用户身份验证,请通过检查用户是否被标记为管理员或属于某种管理角色来限制对此页面的访问。
if (Request.IsLocal) ...类型检查,但缺点是您仍然必须连接到服务器并在本地浏览网站--这可能并不总是可能的。但是,这仍然具有能够轻松查看关键系统设置的好处。就我个人而言,我使用了两种方法的组合,其中本地请求总是允许访问,而非本地请求需要管理用户-例如。if (!Request.IsLocal && !IsAdminUser()) throw new SecurityException()。
另外,我同意Evgeny的观点--小心不要泄露页面上任何真正敏感的内容(例如应用程序连接字符串或密码)。
发布于 2010-05-06 05:04:17
使用窗体身份验证,并设置一两个访问该页的用户。这样,一旦站点被部署,您就可以更改密码并撤销访问权限。
https://stackoverflow.com/questions/2777695
复制相似问题