- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Delphi 10.2 中使用 TWebBrowser 组件,该组件是从 SHDocVW_TLB 类型库导入的。
我想使用此网络浏览器浏览本地文件和受信任环境中的文件。但我注意到,由于安全限制,从本地文件(更准确地说:我使用 this code 加载到浏览器组件中的自定义 HTML 内容)到 LAN 或 WAN 的 AJAX 调用是不可能的。
我的目标是禁用此 Web 浏览器控件的所有安全限制(我了解风险)。
不确定是否还有其他方法,但我想我必须创建一个自定义的 IInternetSecurityManager。在我的研究过程中我发现this document by Microsoft ,并解释了如何编写这样的 SecurityManager。但我找不到如何将此自定义 IInternetSecurityManager“插入/覆盖”到我的 TWebBrowser 控件中。
我需要做什么才能完全禁用所有安全限制?谢谢您的任何提示!
最佳答案
答案同MSHTML documentation您在问题中链接到的:
Applications Hosting the WebBrowser Control or MSHTML
The WebBrowser Control or MSHTML hosts could create a security manager (by implementing the
IInternetSecurityManager
interface) that handles the URL actions and policies that are important to the host. Other URL actions and policies would be passed to the default security manager so it could handle them appropriately. TheIInternetSecurityMgrSite
interface would be used to handle Windows-related information from the component so that the customized security manager could handle any user interface it required.To create a customized security manager, the component must implement the
IInternetSecurityManager
interface. Any methods or URL actions that the customized security manager needs the default security manager to act on should returnINET_E_DEFAULT_ACTION
.Security Warning: Implementing
IInternetSecurityManager
methods incorrectly can compromise the security of your application. Any methods or URL actions that the customized security manager needs the default security manager to act on should returnINET_E_DEFAULT_ACTION
. If a method does not override default behavior and returns an HRESULT indicating success, the action is unhandled and can put users at risk for an elevation of privilege attack. You should review Security Considerations: URL Security Zones API before continuing.The component must also implement an object that supports the
IOleClientSite
interface when embedding either the WebBrowser Control or MSHTML.The following steps occur for a URL action.
MSHTML uses
CoCreateInstance
to create an instance of the Internet Security Manager.The Internet Security Manager calls the
QueryInterface
method on MSHTML to get itsIServiceProvider
interface. MSHTML then calls theQueryInterface
method on theIOleClientSite
interface to get theIServiceProvider
interface.
IServiceProvider::QueryService
is called to get anIInternetSecurityManager
interface. The component then passes a pointer to its implementation ofIInternetSecurityManager
to the Internet Security Manager.Calls from MSHTML to the
IInternetSecurityManager
methods are passed to the custom security manager from the default Internet Security Manager.If the method called returns
INET_E_DEFAULT_ACTION
, the default implementation ofIInternetSecurityManager
is used to resolve the call. Otherwise, the result from the custom security manager is returned.The Internet Security Manager returns the result back to MSHTML.
因此,首先您需要编写一个实现 IInternetSecurityManager
接口(interface)的类。
其次,幸运的是 TOleControl
(TWebBrowser
派生自)已经实现了 IOleClientSite
和 IServiceProvider
接口(interface)至少是 Delphi 2006,所以您需要做的就是为其 public ServiceQuery
分配一个处理程序。事件,当 MSHTML 调用 IServiceProvider.QueryService()
查找 IInternetSecurityManager
时,您可以返回自定义安全管理器类的实例。
对于较旧的 Delphi 版本,您可以通过查询 IOleObject
的 DefaultInterface
属性来手动向 TWebBrowser
提供 IOleClientSite
对象。界面,然后调用IOleObject.SetClientSite()
方法。以下文章演示了这样的示例:
How to customise the TWebBrowser user interface (part 3 of 6)
通过自定义 IOleClientSite
提供 TWebBrowser
,您也可以提供自己的自定义 IDocHostUIHandler
, IDocHostUIHandler2
, IDocHostShowUI
,和ICustomDoc
对象到 MSHTML(MSHTML 不会使用 IServiceProvider
查询它们,因此它们不会触发 TWebBrowser.ServiceQuery
事件)。这些接口(interface)是大多数WebBrowser Customization的根源。选项,如 MSDN 上所述:
The mechanism for WebBrowser Control customization is designed to be automated when a container provides support for ActiveX controls. Whenever the WebBrowser Control is instantiated, it attempts to find
IDocHostUIHandler
,IDocHostUIHandler2
andIDocHostShowUI
implementations from the host, if they are available. The WebBrowser Control does this by aQueryInterface
call on the host'sIOleClientSite
interface.This architecture works automatically for an application that implements an
IOleClientSite
interface and that passes anIOleClientSite
pointer to the WebBrowser Control through the browser'sIOleObject::SetClientSite
method.
关于delphi - TWebBrowser:禁用所有安全限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663722/
我有一个 ServiceBusQueue(SBQ),它获取大量消息负载。我有一个具有 accessRights(manage) 的 ServiceBusTrigger(SBT),它不断轮询来自 SBQ
在下面给出的结果集中,有 2 个唯一用户 (id),并且查询中可能会出现更多此类用户: 这是多连接查询: select id, name, col1Code, col2Code, col2Va
我正在用 Python 2.7.3 编写一个带有 GRequests 的小脚本和 lxml 可以让我从各种网站收集一些收藏卡价格并进行比较。问题是其中一个网站限制了请求的数量,如果我超过它,就会发回
我想知道何时实际使用删除级联或删除限制以及更新级联或更新限制。我对使用它们或在我的数据库中应用感到很困惑。 最佳答案 在外键约束上使用级联运算符是一个热门话题。 理论上,如果您知道删除父对象也将自动删
下面是我的输出,我只想显示那些重复的名字。每个名字都是飞行员,数字是飞行员驾驶的飞机类型。我想显示驾驶不止一架飞机的飞行员的姓名。我正在使用 sql*plus PIL_PILOTNAME
我正在评估不同的移动框架,我认为 nativescript 是一个不错的选择。但我不知道开发过程是否存在限制。例如,我对样式有限制(这并不重要),但我想知道将来我是否可以有限制并且不能使用某些 nat
我正在尝试使用 grails 数据绑定(bind)将一些表单参数映射到我的模型中,但我认为在映射嵌入式集合方面可能存在一些限制。 例如,如果我提交一些这样的参数,那么映射工作正常: //this wo
是否可以将 django 自过滤器起的时间限制为 7 天。如果日期超过 7 天,则不应用过滤器 最佳答案 timesince 的源代码位于 django/django/utils/timesince.
我想在我的网站上嵌入一个 PayPal 捐赠按钮。但问题是我住在伊朗——这个国家受到制裁,人们不使用国际银行账户或主要信用卡。 有什么想法吗?请帮忙! 问候 沮丧 最佳答案 您可以在伊朗境内使用为伊朗
这是我的查询 select PhoneNumber as _data,PhoneType as _type from contact_phonenumbers where ContactID = 3
这个问题在这里已经有了答案: What is the maximum number of parameters passed to $in query in MongoDB? (4 个答案) 关闭
我的一个项目的 AndroidManifest.xml 变得越来越大(> 1000 行),因为我必须对某些文件类型使用react并且涵盖所有情况变得越来越复杂。我想知道 list 大小是否有任何限制。
在使用 Sybase、Infomix、DB2 等其他数据库产品多年后使用 MySQL 5.1 Enterprise 时;我遇到了 MySQL 不会做的事情。例如,它只能为 SELECT 查询生成 EX
这个问题在这里已经有了答案: What is the maximum number of parameters passed to $in query in MongoDB? (4 个回答) 关闭5年
通常我们是在{$apache}/conf/httpd.conf中设置Apache的参数,然而我们并没有发现可以设置日志文件大小的配置指令,通过参考http://httpd.apache.org/do
我正在搜索最大的 Android SharedPreferences 键值对,但找不到任何好的答案。其次,我想问一下,如果我有一个键,它的字符串值限制是多少。多少字符可以放入其中。如果我需要频繁更改值
我目前正在试验 SoundCloud API,并注意到我对/tracks 资源的 GET 请求一次从不返回超过 200 个结果。关于这个的几个问题: 这个限制是故意的吗? 有没有办法增加这个限制? 如
我正在与一家名为 Dwolla 的金融技术公司合作,该公司提供了一个 API,用于将银行信息附加到用户并收取/发送 ACH 付款。 他们需要我将我的 TLS 最低版本升级到 1.2(禁用 TLS 1.
我在 PHP 中有一个多维数组,如下所示: $array = Array ( [0] => Array ( [bill] => 1 ) [1] => Array ( [
我在获取下一个查询的第一行时遇到了问题: Select mar.Title MarketTitle, ololo.NUMBER, ololo.Title from Markets mar JOIN(
我是一名优秀的程序员,十分优秀!