C#:使用XmlTextWriter清理XML文本值?
我正在使用C#:使用XmlTextWriter清理XML文本值?,c#,xml,escaping,sanitization,xmltextwriter,C#,Xml,Escaping,Sanitization,Xmltextwriter,我正在使用XmlTextWriter对我的一些数据进行序列化和持久化。我序列化的几个字段基于用户输入(例如用户名)。今天,我使用了XmlTextWriter的WriteElementString方法 我的问题是:WriteElementString的第二个参数是要写入的文本值。我如何在写作前对其进行消毒 示例代码: XmlTextWriter writer = new XmlTextWriter("filename.xml", null); writer.WriteStartElement("
XmlTextWriter
对我的一些数据进行序列化和持久化。我序列化的几个字段基于用户输入(例如用户名)。今天,我使用了XmlTextWriter
的WriteElementString
方法
我的问题是:WriteElementString
的第二个参数是要写入的文本值。我如何在写作前对其进行消毒
示例代码:
XmlTextWriter writer = new XmlTextWriter("filename.xml", null);
writer.WriteStartElement("User");
writer.WriteElementString("Username", inputUserName);
writer.WriteElementString("Email", inputEmail);
writer.WriteEndElement();
writer.Close();
变量inputUserName
和inputEmail
是用户输入,我想在编写之前对它们进行清理/转义
实现这一目标的最佳方法是什么?你需要什么来逃离那里
WriteElementString
将完成XML所需的所有转义操作(即&
->&;
,,等等)您可以保护这些值,因为这是使用XML时最安全的操作
在此之前,您应该通过RegEx
或任何其他验证来检查值。那么WriteElementString是完全安全的吗?(你这么说是有道理的,我只是不知道是这样)从某种意义上说它是“安全的”,即它保证输出是有效的XML,并且当你读回它时,你会得到相同的字符串。为什么要投反对票?CDATA是保持XML有效的最安全的方法,可以包含您希望包含的所有内容?CDATA根本不重要。这只是一种写文本而不需要逃避的方式。OP使用的代码将正确转义所有内容。作为CDATA编写的代码不会转义,但工作正常。