C# 使用WriteElementString时如何避免XML注入

C# 使用WriteElementString时如何避免XML注入,c#,.net,C#,.net,我有下面的代码并抛出了一个XML注入(请查看突出显示的文本) private string GetRecordSet(OleDbDataReader oDR) { XmlTextWriter xTWriter = null; StringWriter oSWriter = null; int iRecCnt=0; string sName = String.Empty;

我有下面的代码并抛出了一个XML注入(请查看突出显示的文本)

private string GetRecordSet(OleDbDataReader oDR)
        {
            XmlTextWriter xTWriter = null;
            StringWriter oSWriter = null;
            int iRecCnt=0;
            string sName = String.Empty;
            string sValue = String.Empty;

            try
            {
                //Create Out XML    
                oSWriter = new StringWriter();
                xTWriter = new XmlTextWriter(oSWriter);
                xTWriter.Formatting = Formatting.Indented;
                xTWriter.WriteStartElement("SESSION");

                while(oDR.Read()) 
                {
                    iRecCnt++;

                    sName = oDR.GetValue(0).ToString();
                    sValue = oDR.GetValue(1).ToString();
                    **xTWriter.WriteElementString(sName, sValue);**
                }

                xTWriter.WriteElementString("TotalRecords", iRecCnt.ToString());
                xTWriter.WriteEndElement(); //ROWSET END

                //Return XML string. If no records found then return empty string
                string sRtrn = oSWriter.ToString();
                if (iRecCnt == 0) sRtrn = string.Empty;
                return sRtrn;
            }

您没有以任何方式对输入进行消毒。它的XML是可注入的,因为XML元字符可用于将代码更改为非预期行为。元字符示例:单引号、双引号,-任何在代码中插入的内容都可能导致代码编写非预期的xml元素或属性。

抛出xml注入
什么抛出了它?当我运行工具时,它会说找到了xml注入。在writeElementString的while循环中。“您的工具”。好的,我明白了。:)工具的名称是Fortify+1,我只想将不断变化的突出显示字符串添加到
xTWriter.WriteElementString(sName,System.SecurityElement.Escape(sValue));
应该会有帮助。