禁用WebBrowser控件中的活动内容

时间:2016-03-03 16:56:35

标签: wpf

我在应用程序中嵌入了一个WebBrowser控件,并显示了从服务器收到的内容。具体来说:控件绑定到一个字符串,该字符串包含来自其余调用的错误消息,有时是HTML。

我想知道如果有效内容存在安全风险,例如: JavaScript将作为错误消息的一部分发送。有没有办法指示WebBrowser控件禁用所有活动内容?

1 个答案:

答案 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了解详情。