65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2009年6月25日

CPOL
viewsIcon

23355

downloadIcon

69

这或许能帮你节省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);
}
© . All rights reserved.