hma*_*led 2 c# string connection-string
我有一个包含登录名,数据库和密码的字符串.
string str = "user Id=abc, database=DDD, Password=mypasswd"
Run Code Online (Sandbox Code Playgroud)
我希望能够用不同的值替换数据库值"DDD".
我尝试使用string.Replace,但我不知道现有的数据库是什么.
有谁知道一个简单的解决方案?
Aka*_*ava 11
以下是MSDN唯一推荐的防止连接字符串注入攻击的方法
http://msdn.microsoft.com/en-us/library/ms254947.aspx
// cs stores previous connection string which came from config
System.Data.SqlClient.SqlConnectionStringBuilder builder =
new System.Data.SqlClient.SqlConnectionStringBuilder(cs);
builder.InitialCatalog = "NEWDB";
// you get your database name replaced properly...
cs = builder.ToString();
Run Code Online (Sandbox Code Playgroud)
根据数据库或数据库驱动程序的类型,您必须使用不同的类,对于MySql,它应该是MySqlConnectionStringBuilder,属性名称可能是Database.
一种替代方法是使用正则表达式,这将替代你:
using System.Text.RegularExpressions;
string cStr = "user Id=abc, database=DDD, Password=mypasswd";
Console.WriteLine(cStr);
Regex r = new Regex("(?<=database=)(.+?)(?=,)");
cStr = r.Replace(cStr, "NewDatabaseName");
Console.WriteLine(cStr);
Run Code Online (Sandbox Code Playgroud)
注意:这是经过编译,运行和验证的,scriptcs所以它在您的解决方案中是相当可观的.