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上下文中的字符串串联为何存在安全风险而不应尝试来改进答案,并提供建议修复的安全版本。