C# 如何在字符串值中强制使用双引号

C# 如何在字符串值中强制使用双引号,c#,C#,我需要传递一个如下所示的字符串值: "<CREDS email="billybong@domain.com" myvalue="hampset" />" “” 调用将其设置为: var valToPass = "<CREDS email="\"" + email + "\"" myvalue="\"" + password + "\"" />"; var valToPass=“”; 但valToPass最终看起来像: "<CREDS email=\"bil

我需要传递一个如下所示的字符串值:

"<CREDS email="billybong@domain.com" myvalue="hampset" />"
“”
调用将其设置为:

var valToPass = "<CREDS email="\"" + email + "\"" myvalue="\"" + password +  "\"" />";
var valToPass=“”;
但valToPass最终看起来像:

"<CREDS email=\"billybong@domain.com\" myvalue=\"hampset\" />"
“”
然后它将其作为字符串文本传递。当我将值传递给用Delphi编写的blackbox例程时,我不希望斜杠与字符串一起使用

如何正确格式化字符串?

使用

var valToPass = "<CREDS email=\"" + email + "\" myvalue=\"" + password +  "\" />";
var valToPass=“”;

使用string.Format并用“\”转义双引号怎么样。它使它更具可读性,特别是当您需要对模板字符串进行更多更改时:

var escapedEmail = System.Security.SecurityElement.Escape(email);
var escapedPassword = System.Security.SecurityElement.Escape(password);
var valToPass = string.Format("<CREDS email=\"{0}\" myvalue=\"{1}\" />", escapedEmail , escapedPassword );
var escapedEmail=System.Security.SecurityElement.Escape(电子邮件);
var escapedPassword=System.Security.SecurityElement.Escape(密码);
var valToPass=string.Format(“,escapedEmail,escapedPassword);

对输入值进行转义也很重要,否则输出字符串会容易受到XML注入的攻击。

您的字符串是html或XML:
“”

因此,我敢建议使用XElement的方法

string email = "billybong@domain.com";
string password = "hampset";

XElement xml = new XElement("CREDS",
    new XAttribute("email", email),
    new XAttribute("myValue", password));

string result = xml.ToString();

这个简单的方法保证生成带有转义值的有效结果。

该代码实际编译了吗?在调试器中?调试器显示编码字符串(“显示为\”,换行符显示为\n),以便您可以看到空白。可视化工具(放大镜图标)显示了什么?请仔细检查您是如何转义您的
。您是否试图使用字符串连接来构造HTML?使用xml/HTML可以避免几个小时的挫折。xml/HTML可以使用单引号来指定属性:
这很容易受到攻击。如果我的密码是
,该怎么办/>window.location.replace(“spamURL”)
可以通过解释OP上下文中的字符串串联为何存在安全风险而不应尝试来改进答案,并提供建议修复的安全版本。