ウィジェットのセキュリティーモデル
Opera Widgets security modelをローカライズしたものです。原文とは異なる表現を使ったりしています。
この記事のライセンスはCreative Commons 表示-非営利-継承 2.5 一般です。原著作者はOpera Softwareです。
なお、ウィジェットに関する説明は「Opera ウィジェット」を、その他のウィジェット関連の文書について知りたい方はCategory:ウィジェットを、それぞれご覧ください。
目次 |
[編集] はじめに
Opera Widget(以下「ウィジェット」)はウェブ上のほとんどの場所からデータをダウンロードして繋ぎ合わせることができます。これは、ユーザーに革新的なサービスを提供することができる強力なプラットフォームとなります。ウィジェットは何も設定していない状態では、非常にオープンでこのようなサービスを容易に作ることができるようなセキュリティーモデルとなっています。ウィジェットの作者は、ウィジェットのconfig.xml
ファイルを編集して、ウィジェットがアクセスできるプロトコル、ホスト、ポートを指定することができます。
[編集] 未設定時のセキュリティーモデル
ウィジェットのconfig.xml
ファイルで何も特定されていない場合は、次が適用されます。
- ウィジェットは、http://プロトコルのどのホストにも接続できる。
- ウィジェットは、http://プロトコル以外のどのホストにも接続出来ない。ただし
config.xml
ファイルで特定されている場合を除く。 - ウィジェットは、file://プロトコルを使ってファイルシステムにアクセスできる。
- ウィジェットは、標準的でないポート(80番を除く0〜1023番ポート)には接続できない。ただし
config.xml
ファイルで特定されている場合を除く。 - ウィジェットは、プラグインやJavaアプレットを使用できない。
注:多くのブラウザは、443番ポート(HTTPSのために予約されている)からの外部へのHTTPリクエストをブロックしています。したがって、このポート(443番)やプロトコル(HTTPS)へのアクセスを定義しても動きません。
[編集] インターネットとイントラネットは片方のみアクセス可能
ウィジェット用の特別な仕様では、ウィジェットはインターネットのアドレスかイントラネットのアドレスかのどちらか一方へしか接続することができません。もしウィジェットがインターネットのアドレスに接続すると、その後イントラネットのアドレスには接続できず、その逆もまた同じです。これは、画像やCSSやその他の部品を取り込んだり、Ajaxの呼び出しをすることが含まれます。
次のようなIPv4アドレスはイントラネットのアドレスとみなされます。
- 10.0.0.0 to 10.255.255.255
- 172.16.0.0 to 172.31.255.255
- 192.168.0.0 to 192.168.255.255
- 169.254.0.0 to 169.254.255.255
[編集] ウィジェットのセキュリティを変更する
ウィジェットのconfig.xml
ファイルを使って、特定のドメイン、ポート、プロトコルのファイルへのアクセスに制限することもできます。このために使われるのがsecurity
要素(element)です。
それぞれのsecurity
要素はaccess
要素を持っていて、これがウィジェットがどこにアクセスできるかを特定します。access
要素は次のような要素を持つことができます。
- protocol
- これはウィジェットが外部のサーバーに接続できるプロトコルを特定します。file://以外のすべてのプロトコルが許可されています。
- host
- これはどのホスト名に接続することができるかを制定します。ホスト名は正確に一致しなければ成りません。これはつまり、www.example.comと特定されているウィジェットはexample.comには接続できないということです。IPアドレスもここの値として使うことができます。
- port
- これはどのポート番号をウィジェットが使うかを制定します。値は数字、または横棒(dash)で繋がれた数の範囲(例:1024-2048)、それからコンマで区切られたポートのリスト(例:80, 1337)のいずれかです。
- path
- これはウィジェットが接続できるURLのパス部分を特定します。
access
要素の子要素のうち欠けているものがあれば、そこは「すべて」と解釈されます。プロトコルにおいて、access
要素に何が特定されていても、http://は常に利用可能です。現在のところ、ウィジェットのすべてのネットワークアクセスを取り除くことはできません。
[編集] プラグインとJavaへのアクセス
ウィジェットは、未設定状態ではJavaアプレットやプラグインを利用することはできません。これらは、security
要素の子要素のcontent
要素に含めることで使用可能になります。この要素は、java
とplugin
の2つの属性を持ち、それぞれが'yes'か'no'のどちらかの値を取ります。
[編集] 例
それではaccess
要素とセキュリティーモデルの関係をいくつか紹介しましょう。
<security> <access> <protocol>http</protocol> <protocol>https</protocol> <host>example.com</host> <host>example.org</host> <path>/good</path> <port>2048-4906</port> <port>80,1337</port> </access> <content java="yes" plugins="no" /> </security>
この例では、ウィジェットはexample.comとexample.orgのホストのみに、http://もしくはhttps://プロトコルを使っての接続に制限されています。これらのホストには、2048から4096までの範囲と80番、1337番のポートのみを使って接続できます。どちらのホストにも、このウィジェットは"/goods"というパスにしかアクセスできません。そしてこのウィジェットは、Javaアプレットを使用することができますがプラグインは使用できません。
次の例を見てみましょう。
<security> <access> <host>example.com</host> <port>2048-4906</port> </access> <access> <protocol>https</protocol> <host>example.org</host> <port>80,1337</port> </access> </security>
この例では2つの主なルールがあります。このウィジェットのアクセスはexample.comとexample.orgに限られています。example.comにはhttp://プロトコルと2048番から4096番までのポートを使ってしかアクセスできず、example.orgへはhttps://で80番と1337番ポートを使ってしかアクセスできません。どちらの場合も、ウィジェとはどのパスにもアクセスできます。このウィジェットはデフォルト通り、Javaアプレットやプラグインを利用できません。
<security> <access> <host>example.com</host> <port>2048-4906</port> </access> </security>
この最後の例では、ウィジェットはexample.comに、http://でのみ、2048番から4096番の範囲のポートを使って、そしてどのパスへも接続することができます。