SQL Azure 连接字符串中的密码转义
Password escapes in SQL Azure connection string
我有个绝妙的主意,就是使用 KeePass 密码管理器生成安全密码并将其提供给我的 DBA。
现在我构建了我的 Azure SQL 连接字符串如下
Server=tcp:something.database.windows.net,1433;Initial Catalog=SomeDbName;Persist Security Info=False;User ID=someuser;Password=[read later];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
密码包含至少以下字符,以及upper/lowercase/digits
/"|&@]<#
错误是:ArgumentException: Format of the initialization string does not conform to specification starting at index 151.
在索引 151 处,我可以看到用户名后的分号(我在编辑示例中将其命名为 someuser
,但仅包含小写字母和数字)。 VS Code 指向 ;Password=
序列
之前的第 151 列
问题:
- 我的 SQL Azure 密码是否包含非法字符?
- 哪些需要转义?
- 我该如何逃脱它们?
[编辑]:关于双引号的说明,在 C# 字符串中必须始终对双引号进行转义。我将连接字符串埋在 Azure App 配置选项卡下。这意味着双引号不太可能被重新转义。我相信 EF Core 目前可以正确读取 double-quote
这里实际指定了转义:connection-strings
简单测试一下,你的密码,加上单引号就可以了:
var csBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder();
csBuilder.Password = "/\"|&@]<#";
var cs = csBuilder.ConnectionString;
Console.WriteLine(cs);
Password='/"|&@]<#'
我有个绝妙的主意,就是使用 KeePass 密码管理器生成安全密码并将其提供给我的 DBA。
现在我构建了我的 Azure SQL 连接字符串如下
Server=tcp:something.database.windows.net,1433;Initial Catalog=SomeDbName;Persist Security Info=False;User ID=someuser;Password=[read later];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
密码包含至少以下字符,以及upper/lowercase/digits
/"|&@]<#
错误是:ArgumentException: Format of the initialization string does not conform to specification starting at index 151.
在索引 151 处,我可以看到用户名后的分号(我在编辑示例中将其命名为 someuser
,但仅包含小写字母和数字)。 VS Code 指向 ;Password=
序列
问题:
- 我的 SQL Azure 密码是否包含非法字符?
- 哪些需要转义?
- 我该如何逃脱它们?
[编辑]:关于双引号的说明,在 C# 字符串中必须始终对双引号进行转义。我将连接字符串埋在 Azure App 配置选项卡下。这意味着双引号不太可能被重新转义。我相信 EF Core 目前可以正确读取 double-quote
这里实际指定了转义:connection-strings
简单测试一下,你的密码,加上单引号就可以了:
var csBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder();
csBuilder.Password = "/\"|&@]<#";
var cs = csBuilder.ConnectionString;
Console.WriteLine(cs);
Password='/"|&@]<#'