如何阻止用户浏览 Web 浏览器控件中的某些网站?

2024-02-18

我在应用程序中嵌入了一个简单的网络浏览器,允许用户搜索维基百科,并且我试图阻止用户浏览维基百科之外的其他网站(例如,通过单击引用的外部链接)。现在,我正在使用这个简单的代码:

this.textBoxAddress.Text = this.webBrowser.Url.ToString();
if (this.webBrowser.Url.Host != "en.wikipedia.org")
{
    this.webBrowser.Visible = false;
    this.labelErrorMessage.Visible = true;
}
else
{
    this.webBrowser.Visible = true;
    this.labelErrorMessage.Visible = false;
}

此代码有效,但页面在运行时已加载。如果我把这段代码放入_Navigating尝试抢先阻止用户的事件before页面已加载,但失败,因为 Web 浏览器控件未更新Url属性直到页面加载之后。

我不喜欢这段代码的原因是因为页面在调用时已经加载,因此该页面中的任何错误(例如显示弹出窗口的脚本错误)都会显示,即使网页没有显示。

我读过一些资料,说出于各种原因不要使用 WebBrowser 控件,但在这种情况下,安全性不是主要问题。我也不需要担心最终用户做某事,因为该应用程序是一个内部应用程序,实际上只有一个用户,并且他不会绕过安全性。

禁用 IE 设置中的所有其他页面也不是解决方案,因为该用户使用 IE 进行其他冲浪,并且该组织的 Intranet 站点也在 IE 上运行(并且这些地址会发生变化,因此简单地允许所有这些页面将很难预料)。


订阅WebBrowser.Navigating事件。检查WebBrowserNavigatingEventArgs.Url属性和集合WebBrowserNavigatingEventArgs.Cancel=true如果不是维基百科。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何阻止用户浏览 Web 浏览器控件中的某些网站? 的相关文章

随机推荐