从连接字符串中删除安全凭据





1.00/5 (1投票)
这或许能帮你节省15分钟,并避免将你的 'sa' 密码连同错误信息一起返还给客户的尴尬局面。
引言
这是一个简单的应用程序,包含一个方法,用于从数据库连接字符串中移除安全凭据。
背景
你会在不同的地方反复编写类似的东西,而且总是比你想象的更耗时。
使用代码
欢迎使用这段代码 - 如果需要,也可以添加更多的安全限定符 - 目前,示例只处理 user、uid、pwd 和 password。
主要方法如下 - 所以无需下载代码
string m_DatabaseConnectionString =
"Data Source=MYHAPPYHAPPYDB\\SQLEXPRESS;Initial Catalog=JoyJoy;user=sa;password=W@nk3r";
private string RemoveConnectionStringSecurity(string inString)
{
string[] securityQualifiers = new string[] { "user", "uid",
"password", "pwd" };
string retStr = m_DatabaseConnectionString;
foreach (string qualifier in securityQualifiers)
{
if (retStr.IndexOf(qualifier + "=") > 0)
{
// Remove Security Qualifier
try
{
retStr = retStr.Substring(0,
retStr.ToLower().IndexOf(qualifier + "=") +
qualifier.Length + 1)
+ "*HIDDEN*"
+ retStr.Substring
(
retStr.ToLower().IndexOf(qualifier + "="),
retStr.Length - retStr.ToLower().IndexOf(qualifier + "=")
).Substring
(
retStr.Substring
(
retStr.ToLower().IndexOf(qualifier + "="),
retStr.Length - retStr.ToLower().IndexOf(qualifier + "=")
).IndexOf(";")
);
}
catch
{
// Last element and no terminating ';'
retStr = retStr.Substring(0,
retStr.ToLower().IndexOf(qualifier + "=") + qualifier.Length + 1)
+ "*HIDDEN*";
}
}
}
return inString.Replace(m_DatabaseConnectionString, retStr);
}