4

mshtml.HTMLDocument(JavaScriptから)呼び出されたときにアクセスする.NETクラスライブラリプロジェクトをビルドします。信頼済みサイトの.NET構成のアクセス許可をフルアクセスに変更したので、私のマシンではすべてが正常に機能します。

しかし、エンドユーザーには、たとえばWindows Updateと同じように、InternetExplorerにプロンプ​​トを表示してもらいたいと思います。

強い名前と自己署名証明書を使用してアセンブリを歌いました。アンマネージコードをアサートしていますSecurityPermissionが、ユーザーに「黄色いバー」が表示されません。

このプロンプトをトリガーする方法を知っている人はいますか?ありがとう

後で編集:いくつかの詳細:コンポーネントをそのまま埋め込み、<object classid="dllname.dll#namespace.classname" ><object>動作しますが、セキュリティ権限がありません。

のように埋め込むと<object classid="clsid:..guid.." codebase="dllname.dll#-1,-1,-1,-1"></object>、ポップアップをインストールするためのアクセス許可が表示されますが、オブジェクトはインスタンス化できません。

更新:クラスをCOMクラスにし、Safe-for-scriptingを実装し、それからMSIを作成して、.CABファイルに入れました。ユーザーがTrustedRootsに私の証明書を持っている場合はインストールされ、機能します。

ただし、信頼されていない場合は機能しません(ユーザーへの質問はありません。次のActiveXをブロックしました。

4

1 に答える 1

4

私はあなたの質問がこれだと思います:そうでなければ署名された安全なActiveXコントロールをページで実行できるようにするために、IEに(以前は不明だった)証明書をインストールするようにユーザーに促すことができますか?(これがあなたの質問でない場合は、コメントしてください。修正できます。)

簡単な答え:いいえ。 信頼できる機関からのコード署名証明書のために$$$をシェルアウトする必要があります。(つまり、通常のSSL証明書とは異なるAFAIK)

長い答え:

セキュリティの観点から、不明な証明書で署名されることは、署名されていないことと似ています。これは、クライアントにそのコードを信頼できることを指示する信頼できる機関がないためです。また、IEのデフォルト設定では、署名されていないActiveXコントロールをダウンロードして使用することはできません。

実行しようとしていることが許可されている場合、知識のある攻撃者は証明書を作成して署名するだけで、ユーザーが攻撃コードを実行しやすくなります。

確かに回避策はありますが、すべてクライアントがIE設定を変更するためのアクションを実行するか、(イントラネット設定では)管理者にクライアント設定への変更をプッシュさせる必要があります。

TechNet(http://technet.microsoft.com/en-us/library/cc505863.aspx)からのこれに関する詳細情報は次のとおりです。

Internet Explorerは、認証局を信頼するように構成されていません。攻撃者を含む誰でも、独自のCAを作成して証明書を発行できます。したがって、InternetExplorerはデフォルトですべてのCAを信頼するわけではありません。代わりに、InternetExplorerはほんの一握りのパブリックCAのみを信頼します。証明書が信頼できないCAによって発行され、Webサイトがパブリックインターネット上にある場合、サーバー管理者は信頼できるCAから証明書を取得する必要があります。Webサイトがイントラネット上にある場合、クライアント管理者は発行元のCAを信頼するようにInternetExplorerを構成する必要があります。

于 2009-10-12T18:18:30.247 に答える