「セキュリティ保護のため、コンピュータにアクセスできるアクティブ コンテンツは表示されないよう、Internet Explorerで制限されています。オプションを表示するには、ここをクリックしてください...」
と表示されます。
なぜ、ローカルに置かれたファイルにのみこのような警告が表示されるのでしょうか?
私の感覚的には、ネット上に存在するJavaScriptの方が危険なものが多いと思うのですが……。
ローカルにある場合のみ、特殊な操作(ローカルのファイル操作とか?)ができてしまう、とかでしょうか?
詳しい方、教えてください。
1の回答者です。もう少し詳しくご説明いたします。
閲覧者のローカルディスクのファイルに書き込みを行う機能は、
JavaScriptの言語自体がはじめから持つ機能ではなく、
「JavaScriptを経由して呼び出せる”ActiveXコントロール”の機能」です。
ローカルの場合だけ、質問の画像にあるような
アクティブコンテンツ(ActiveXコントロールなど)の警告表示が出るのは、
「セキュリティレベルの既定の設定」の問題が関与しています。
[インターネットオプション]の、[セキュリティ] 設定において、
「ActiveXコントロールに対して自動的にダイアログを表示」
という設定項目が、
「ローカルイントラネット」ゾーンでは既定が「有効」であり、
「インターネット」ゾーンでは既定が「無効」だからです。
なぜかというと、既定の設定では
「ローカルイントラネット]ゾーンは、
「インターネットゾーン」よりも、
、セキュリティレベルが甘いからです。
インターネットゾーンが「中高」に対して、
ローカルは「中低」が既定など。
「ローカルにある場合のみ」ではなく
「ブラウザの(特にActiveX関連の)セキュリティレベルが低く設定されている」場合に危険性があるということです。
たとえ"インターネット"ゾーンでも、
ActiveXのセキュリティレベルを変更し、
例えば、レベルのカスタマイズの設定で
デフォルトで無効になっている、この
「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」
を”有効”にしたり
するなどして、
全体として安全が保証できないActiveXの実行が許されているような設定にしていれば、
ローカルでないインターネット上のJavaScriptからでも、
ActiveXを使わせてローカルファイルにアクセスすることが可能です。
正直、こちらの設定のほうが危険といえるでしょう。
「ゾーンごとのActiveX実行に関するセキュリティ設定」が
一番のポイントであり、
危険かどうかは設定次第であり、どちらでも危険になりえます。
既定(はじめの)のセキュリティレベルが違うというだけとも
いえるかもしれません。
こんにちは
ローカルにある場合のみ、特殊な操作(ローカルのファイル操作とか?)ができてしまう、とかでしょうか?
そうですね。
たとえば、ローカルのJavaScriptの実行法によっては
WSH,ローカルのドライブ・フォルダ・ファイルを操作できてしまう
"FileSystemObject"などが使えて、
セキュリティ上の危険はあります。
ありがとうございます!
「FileSystemObject + JavaScript」
で検索して出てきたプログラムを実行してみました。
確かに、ローカルでのファイル操作ができてしまいますね!
FileSystemObjectについて、もう少し勉強してみます。
あとは、Ajaxで例えば"test.txt"を読み込むスクリプトの場合、これがどこのファイルを意味するかという問題があると思います。c:\test.htmならc:\test.txtになりますので・・・。
ありがとうございます!
1の質問の検証の際に、検索で出てきたsusie-t様のサイトを参考にさせていただきました。
他にもtheater.js等を見させていただき、JavaScriptが持っている大きな可能性を感じました。
ローカルで動くスクリプト言語ということで、今まであまり重視してこなかったのですが、JavaScriptって、奥が深いのですね!!
Ajaxに関しては、まだ勉強途中なので、もう少し勉強して検証してみたいと思います。
1の回答者です。もう少し詳しくご説明いたします。
閲覧者のローカルディスクのファイルに書き込みを行う機能は、
JavaScriptの言語自体がはじめから持つ機能ではなく、
「JavaScriptを経由して呼び出せる”ActiveXコントロール”の機能」です。
ローカルの場合だけ、質問の画像にあるような
アクティブコンテンツ(ActiveXコントロールなど)の警告表示が出るのは、
「セキュリティレベルの既定の設定」の問題が関与しています。
[インターネットオプション]の、[セキュリティ] 設定において、
「ActiveXコントロールに対して自動的にダイアログを表示」
という設定項目が、
「ローカルイントラネット」ゾーンでは既定が「有効」であり、
「インターネット」ゾーンでは既定が「無効」だからです。
なぜかというと、既定の設定では
「ローカルイントラネット]ゾーンは、
「インターネットゾーン」よりも、
、セキュリティレベルが甘いからです。
インターネットゾーンが「中高」に対して、
ローカルは「中低」が既定など。
「ローカルにある場合のみ」ではなく
「ブラウザの(特にActiveX関連の)セキュリティレベルが低く設定されている」場合に危険性があるということです。
たとえ"インターネット"ゾーンでも、
ActiveXのセキュリティレベルを変更し、
例えば、レベルのカスタマイズの設定で
デフォルトで無効になっている、この
「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」
を”有効”にしたり
するなどして、
全体として安全が保証できないActiveXの実行が許されているような設定にしていれば、
ローカルでないインターネット上のJavaScriptからでも、
ActiveXを使わせてローカルファイルにアクセスすることが可能です。
正直、こちらの設定のほうが危険といえるでしょう。
「ゾーンごとのActiveX実行に関するセキュリティ設定」が
一番のポイントであり、
危険かどうかは設定次第であり、どちらでも危険になりえます。
既定(はじめの)のセキュリティレベルが違うというだけとも
いえるかもしれません。
詳しい解説をありがとうございます!
ローカルとインターネットで設定が別々になっているというのを始めて知りました。ローカルとインターネットで、警告が出る・出ないというのは、ここの設定方法次第なのですね。
私が、ActiveXの理解をあまりしていないので、バクゼンとした言い方しかできないのですが、
ローカルの場合には、JavaScriptでのActiveXの呼び出しに関して、多くの権限が与えられているので、警告が出る、と言う理解でよいのでしょうか?
もう少し、JavaScriptとActiveXの勉強をしてみたいと思います。
詳しい解説をありがとうございます!
ローカルとインターネットで設定が別々になっているというのを始めて知りました。ローカルとインターネットで、警告が出る・出ないというのは、ここの設定方法次第なのですね。
私が、ActiveXの理解をあまりしていないので、バクゼンとした言い方しかできないのですが、
ローカルの場合には、JavaScriptでのActiveXの呼び出しに関して、多くの権限が与えられているので、警告が出る、と言う理解でよいのでしょうか?
もう少し、JavaScriptとActiveXの勉強をしてみたいと思います。