Mathematica >
Mathematicaチュートリアル関数 »

ノートブックセキュリティ

Mathematica では,コンピュータのファイルシステム(ファイル)へのアクセス,プロセス間通信(MathLink Mathematica 関数),コードとしてのデータの評価(式と文字列の間の変換),任意の外部プログラムを実行する機能(外部プログラムの呼出し)が提供されている.これらの機能を使うとMathematica ユーザは非常に便利なタスクを実行する強力なプログラムが作成できるが,誤用の可能性もある.
Mathematica ノートブックフロントエンドには,コードの評価にShift+Enter評価,初期化セル,動的内容の3つのメカニズムがある.
このチュートリアルにはライブのコントロールが含まれているので,何かを変更すると直ちにシステム設定が変更される.

Shift+Enter評価

Shift+Enter評価を開始するにはユーザとのインタラクションが必要なので,このメカニズムを使って評価されるコードに悪意のある可能性があるとしてもMathematica には防衛手段がない.ユーザは信頼されないソースからのコードに対してShift+Enter評価を実行しないようにしなければならない.自分でコードを書いている場合は,コードが意図しない結果をもたらすことのないよう,十分注意を払う必要がある.例えば,自分のコンピュータからファイルを削除するプログラムを評価するとしても,Mathematica は警告を出さない.

初期化セル

初期化セルは,あるノートブック内の任意の入力を最初に評価するときに,そのノートブックで必要な初期化コードを評価する便利な方法である.この初期化コードは,ユーザが見ることはほとんどなく,自動的に評価されるので,Mathematica は注意を表示し,初期化コードを実行してもよいかどうかを確認する.ユーザは,コードが安全であると断定されない限り,信頼できないソースから得たノートブックの初期化コードを評価してはならない.
  • Yesボタンをクリックすると,まずノートブックの初期化セルすべてが評価され,選択されたセルが評価される.
  • Noボタンをクリックすると,初期化セルは全く評価されないが選択されたセルは評価される.この場合,まだ評価されていない初期化コードに依存する評価があるため,エラーが起る可能性がある.
  • Cancelボタンをクリックすると,初期化セルも選択されたセルも評価されない.

動的内容

Mathematica 6には高度な動的インタラクティブ機能が含まれている.インタラクティブなDynamic内容を含むノートブックは,ノートブックファイルを開く以外,ユーザによるアクションは必要とせず自動的にコードを評価することができる.多くの場合,これはユーザが望んでいることであるが,このような自動評価が起る前にユーザは注意しなければならないこともある.
ユーザが動的内容を含むノートブックを開くとき,Mathematica はまずノートブックのディレクトリが信頼されるか,信頼されないか,どちらでもないかを判断する.
  • ノートブックのディレクトリが信頼される場合,ノートブックはユーザに警告を与えず自動的に動的評価を実行することが許可される.
    • ノートブックのディレクトリが信頼されない場合,ノートブックが動的評価を実行するためのすべての試みに対して警告が出される.
  • ノートブックのディレクトリが信頼されるものでも信頼されないものでもない場合,動作は以下で説明するTrustByDefaultオプションの値に依存する.
Mathematica には,自動評価についてどのノートブックでユーザに警告を出すようにするかを設定するために使うことのできるオプションがある.

TrustedPath

TrustedPathオプションの値は,Mathematica が常に信頼するディレクトリのリストである.TrustedPathの任意のディレクトリにあるノートブックファイルはすべてMathematica に信頼される.Mathematica は信頼されるノートブックが開かれても警告を表示せず,ノートブックは自動的に動的評価を実行することができる.
TrustedPathオプションはデフォルトで$InstallationDirectory$BaseDirectory$UserBaseDirectoryを含んでいるので,Mathematica のインストールファイルやインストールされた追加アプリケーションはユーザに警告を出すことなく,動的内容を表示することができる.
以下はコンピュータ上で現在Mathematica に信頼されているディレクトリである.
Click for copyable input

UntrustedPath

UntrustedPathオプションの値は,Mathematica が常に信頼しないディレクトリのリストである.UntrustedPathの任意のディレクトリにあるノートブックファイルはすべてMathematica に信頼されない.信頼されないノートブックが開かれ,動的評価を実行しようとするとMathematica は常に警告を表示する.
UntrustedPathオプション値はデフォルトでユーザのデスクトップフォルダ(Webブラウザダウンロードが保存されることの多い場所),ユーザの環境設定フォルダ(電子メールの添付ファイルが保存されることの多い場所),コンピュータの一時ディレクトリとなっている.もしWebブラウザや電子メールプログラムの設定を変更し,標準的でない場所にダウンロードしたファイルを保存するようにしている場合は,その場所をUntrustedPathオプションの値にぜひ加えておいた方がよい.
以下はコンピュータ上で現在Mathematica に信頼されていないディレクトリである.
Click for copyable input

ネスト

TrustedPathUntrustedPathのディレクトリはネストすることができる.ノートブックを含むディレクトリが最も深いところにネストされている場合は信頼される.以下に例を挙げる.
  • FrontEnd`FileName[{$HomeDirectory, "Desktop"}]は信頼されない.
  • FrontEnd`FileName[{$HomeDirectory, "Desktop", "SafeNotebooks"}]は信頼される.
  • FrontEnd`FileName[{$HomeDirectory, "Desktop"}, "SomeDownload.nb"]は「Desktop」が信頼されないため,信頼されない.
  • FrontEnd`FileName[{$HomeDirectory, "Desktop", "SafeNotebooks"}, "MyNotebook.nb"]は「SafeNotebooks」が信頼されるため,信頼される.

TrustByDefault

TrustByDefaultオプションは,ユーザが信頼されているディレクトリでも信頼されていないディレクトリでもないディレクトリにある動的内容を含むノートブックを開こうとしたときに,Mathematica が警告を表示するようにするかどうかを決定する.TrustByDefaultオプションで取れる値は以下の通りである.
TrueUntrustedPathのディレクトリにないノートブックを信頼されるものとみなし,開かれるときに警告を表示しない
FalseTrustedPathのディレクトリにないノートブックを信頼されないものとみなし,開かれるときに警告を表示する
AutomaticTrustedPathUntrustedPathのどちらにもないディレクトリのノートブックでは,それに安全ではない動的内容(以下を参照)が含まれている場合だけ警告を表示する

TrustByDefaultオプションのデフォルト

TrustByDefaultオプションの現在の値は である.

安全でない動的内容

動的内容は以下のような場合,安全でないとみなされる.

オプション値の変更

TrustedPathUntrustedPathTrustByDefaultNotebookSecurityOptionsカテゴリのオプションである.このオプションはダイアログ,またはを使って変更することができる.
TrustedPathUntrustedPathTrustByDefaultオプションの値を変更しようとすると,Mathematica はユーザに変更の確認を尋ねる.これは悪意のあるコードがユーザの知らない間にこれらのオプション値を変更することのないようにするための予防策である.