WebService中傳整份XML字串來處理,很多系統之前都是這樣做的!
現在居然原始碼掃描工具居然說 XElement.Parse 有問題....
之前系統透過Web Service來處理資料,而參數是接一份XML的字串,類似如下,
public bool ProcProductsWithXElement(string products)
{
string xinput = products;
XElement xElem = XElement.Parse(xinput);
IEnumerable<XElement> productElements =
from AdditionalXElement in xElem.Descendants("Produc")
select AdditionalXElement;
// **** 處理Products *****
return true;
}
但這樣在 XElement.Parse(xinput) 就會有 XML Injection 的問題 (XDocument.Parse也會)!
報告建議不要使用整份文件的內容,可是 .…. 那現在要怎麼辦呢?
目前測試可以使用 XmlDocument 來處理,如下,
public bool ProcProductsWithXMLDocument(string products)
{
string xinput = products;
XmlDocument xdoc = new XmlDocument();
//一定要設定哦!
xdoc.XmlResolver = null;
xdoc.LoadXml(xinput);
//如果需要XElement的話,可以將Nodes轉成XElement,
var productElements = xdoc.SelectNodes(@"//Produc")
.Cast<XmlNode>().Select(node => new XElement(node.Name, node.InnerXml));
// **** 處理Products *****
return true;
}
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^