我在应用程序中嵌入了一个WebBrowser控件,并显示了从服务器收到的内容。具体来说:控件绑定到一个字符串,该字符串包含来自其余调用的错误消息,有时是HTML。
我想知道如果有效内容存在安全风险,例如: JavaScript将作为错误消息的一部分发送。有没有办法指示WebBrowser控件禁用所有活动内容?
答案 0 :(得分:1)
有几种方法可以做:
第一种方法是从您的字符串中删除javascript,然后再将其传递给浏览器Elian Ebbing's answer:
快速'n'脏方法将是这样的正则表达式:
var regex = new Regex( "(\\<script(.+?)\\</script\\>)|(\\<style(.+?)\\</style\\>)", RegexOptions.Singleline | RegexOptions.IgnoreCase ); string ouput = regex.Replace(input, "");
更好的*(但可能更慢)选项将是使用 HtmlAgilityPack:
HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(htmlInput); var nodes = doc.DocumentNode.SelectNodes("//script|//style"); foreach (var node in nodes) node.ParentNode.RemoveChild(node); string htmlOutput = doc.DocumentNode.OuterHtml;
*)有关为何更好的讨论,请参阅this thread。
这种方式似乎更好更容易。
第二种方法是使用WinForms webbrowser控件,它允许你控制较低级别的浏览器,但这涉及一些调用WinAPI。
您可以查看this link了解详情。