正如标题所示:
您对允许管理员从应用程序动态更新SQL Server连接字符串与仅向应用程序显示连接详细信息有什么看法?
由于数据库连接非常重要,并且在频繁使用的系统上,连接的突然变化似乎可能会导致问题。但是,我认为显示服务器和目录以及连接是否使用SSPI或SQL Auth可能对不喜欢使用.NET配置文件的管理员有所帮助。
思想?
答案 0 :(得分:2)
您如何识别管理员?大概不是通过查看数据库。因为如果你确实使用数据库,然后将数据库更改为另一台服务器,那么它们可能不是管理员,或者没有数据库,然后是bam - 他们无法进行修复。
通常,我喜欢在这个带外(配置文件甚至在Active Directory中)进行维护,因此它位于集中管理的资源中。我们通常还有应用程序管理员(角色,维护,批准,与工作流程相关的“管理员”),他们在技术意义上确实不是系统管理员。通常,我们不允许系统管理员作为应用程序中的用户,经理或管理员。即我可能有一个采购订单系统管理员,他可以取消采购订单,但他们无法更改数据库连接,我有一个系统管理员,甚至无法创建或批准采购订单,更不用说无效,但他们可以在升级或迁移过程中更改配置或Active Directory中的数据库连接。
我同意调试页面,帮助页面或页面对于向系统管理员和应用程序管理员显示信息非常有用。他们是否应该被允许改变事情真的取决于。
答案 1 :(得分:1)
听起来像两个坏主意。在应用程序运行时允许更改连接字符串肯定会导致中断(连接断开,数据不同步以及谁知道还有什么)。甚至向任何人(甚至是管理员)显示连接细节似乎都是一个危险的安全漏洞。
你有什么样的网站需要这类东西?
答案 2 :(得分:0)
要求您的应用程序完全信任,否则它只是使用System.Web.Configuration命名空间:
http://www.beansoftware.com/ASP.NET-Tutorials/Modify-Web.Config-Run-Time.aspx
对web.config进行任何更改后,应用程序都会回收,因此如果销售可能在飞行中,那么在一天中间您仍然不想这样做。
此外,通常身份验证和授权依赖于数据库。因此,如果您无法进行身份验证和授权,您将无法访问管理页面来更改连接字符串! (除非您的授权和身份验证中没有任何内容涉及数据库,至少对于您考虑的管理页面而言)
答案 3 :(得分:0)
我个人不喜欢让管理员在现场网站上更改任何内容。所有配置更改都应通过源代码经过的版本控制,时间戳,用户归属,构建系统检查过程。只有这样才能绘制连接“这在时间X停止工作,因为用户Y在时间B改变了配置A”。
关于我所知道的主题的极端观点,但考虑到可以追溯到操作员错误的大部分停机时间,我认为这是合理的,而且老实说我无法理解人们对能够做到的迷恋在实时服务器上编辑脆弱的XML文件,其中一个额外的'>'可以打开整个网站。