- 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/
我正在学习 Spring 安全性,但我对它的灵活性感到困惑.. 我知道我可以通过在标签中定义规则来保护网址 然后我看到有一个@secure 注释可以保护方法。 然后还有其他注释来保护域(或 POJO)
假设有一个 key 加密 key 位于内存中并且未写入文件或数据库... byte[] kek = new byte[32]; secureRandom.nextBytes(kek); byte[]
我有 Spring Security 3.2.0 RC1 的问题 我正在使用标签来连接我 这表示“方法‘setF
我正在创建一个使用 Node Js 服务器 API 的 Flutter 应用程序。对于授权,我决定将 JWT 与私钥/公钥一起使用。服务器和移动客户端之间的通信使用 HTTPS。 Flutter 应用
在过去的几年里,我一直在使用范围从 Raphael.js 的 javascript 库。至 D3 ,我已经为自己的教育操纵了来自网络各地的动画。我已经从各种 git 存储库下载了 js 脚本,例如 s
在 python 中实现身份验证的好方法是什么?已经存在的东西也很好。我需要它通过不受信任的网络连接进行身份验证。它不需要太高级,只要足以安全地获取通用密码即可。我查看了 ssl 模块。但那个模块让我
我正在尝试学习“如何在 Hadoop 中实现 Kerberos?”我已经看过这个文档 https://issues.apache.org/jira/browse/HADOOP-4487我还了解了基本的
我有一个带有 apache2、php、mysql 的生产服务器。我现在只有一个站点 (mysite.com) 作为虚拟主机。我想把 phpmyadmin、webalizer 和 webmin 放在那里
前些天在网上看到防火墙软件OPNsense,对其有了兴趣,以前写过一个其前面的一个软件M0n0wall( 关于m0n0wa
我在 Spring Boot 和 oauth2(由 Google 提供)上编写了 rest 后端,在 "/login" 上自动重定向。除了 web 的 oauth 之外,我还想在移动后端进行 Fire
我想调用类 Foo,它的构造函数中有抽象类 Base。我希望能够从派生自 Base 的 Derived 调用 Foo 并使用 Derived覆盖方法而不是 Base 的方法。 我只能按照指示使用原始指
如何提高 session 的安全性? $this->session->userdata('userid') 我一直在为我的 ajax 调用扔掉这个小坏蛋。有些情况我没有。然后我想,使用 DOM 中的
我目前正在为某些人提供程序集编译服务。他们可以在在线编辑器中输入汇编代码并进行编译。然后编译它时,代码通过ajax请求发送到我的服务器,编译并返回程序的输出。 但是,我想知道我可以做些什么来防止对服务
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
目前,我通过将 session 中的 key 与 MySQl 数据库中的相同 key 相匹配来验证用户 session 。我使用随机数重新生成 session ,该随机数在每个页面加载时都受 MD5
Microsoft 模式与实践团队提供了一个很棒的 pdf,称为:“构建安全的 asp.net 应用程序”。 microsoft pdf 由于它是为 .Net 1.0 编写的,所以现在有点旧了。有谁知
在 Lua 中,通常会使用 math.random 生成随机值和/或字符串。 & math.randomseed , 其中 os.time用于 math.randomseed . 然而,这种方法有一个
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我们有一个严重依赖 Ajax 的应用程序。确保对服务器端脚本的请求不是通过独立程序而是通过坐在浏览器上的实际用户的好方法是什么 最佳答案 真的没有。 通过浏览器发送的任何请求都可以由独立程序伪造。 归
我正在寻找使用 WebSockets 与我们的服务器通信来实现 web (angular) 和 iPhone 应用程序。在过去使用 HTTP 请求时,我们使用请求数据、url、时间戳等的哈希值来验证和
我是一名优秀的程序员,十分优秀!