使用反射的危险连接字符串添加到ConfigurationManager.ConnectionStri

2019-10-18 10:52发布

我见过几个帖子详细介绍了如何绕过只读屏障中添加连接字符串ConfigurationManager.ConnectionStrings。 见下文一个这样的后的一个例子。 除了上述的例子中而来的,是可怕的,但模糊的警告所采用的技术是“危险的”。 什么是危险?

Dim cssc As ConnectionStringSettingsCollection = WebConfigurationManager.ConnectionStrings
Dim t As Type = cssc.GetType().BaseType ' System.Configuration.ConfigurationElementCollection
Dim fi As FieldInfo = t.GetField("bReadOnly", BindingFlags.Instance Or BindingFlags.NonPublic)
fi.SetValue(cssc, False)

Answer 1:

原因之一,这是“危险”的是,你是依靠命名的私家领域bReadOnly 。 那场不是公众.NET API的一部分,并在.NET的未来版本,恕不另行通知可能会改变。 如果出现这种情况,如果你升级到该版本,你的代码将不再工作。



文章来源: Danger of using reflection to add Connection Strings to ConfigurationManager.ConnectionString