我尝试使用AntiXss库清理下面提到的xml字符串:
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
width="467" height="462" onload="alert(document.domain)">
<rect x="80" y="60" width="250" height="250" rx="20"
style="fill:#00ff21; stroke:#000000;stroke-width:2px;" />
<rect x="140" y="120" width="250" height="250" rx="40"
style="fill:#00f2ff; stroke:#000000; stroke-width:2px;
fill-opacity:0.7;" />
</svg>
代码:
byte[] document = new byte[file.ContentLength];
var xml = Encoding.UTF8.GetString(document);
var results = Sanitizer.GetSafeHtml(xml);
在调试上面的内容中,我看到一个空字符串作为结果的一部分返回。
我还尝试了其他几个小块包:BracketPipe包含以下代码:
using (var reader = new HtmlReader(xml))
{
var result = (string)reader.Sanitize().Minify().ToHtml();
}
但是上面也会返回相同的结果。
Nugget Package:HtmlSanitizer:
var sanitizer = new HtmlSanitizer();
var sanitized = sanitizer.Sanitize(xml);
任何人都可以帮我知道如何解决这个问题吗?