笔记本安全
Mathematica 给用户提供了访问计算机文件系统(文件),进程间通信(MathLink Mathematica 函数),作为代码计算数据(表达式和字符串间的转换),以及运行任意外部程序的能力(调用外部程序). 虽然这些功能使 Mathematica 用户能够穿件功能强大的程序来执行真正有用的任务,它们也带来了被滥用的可能.
Mathematica 笔记本前端提供了计算代码的三种机制: Shift+Enter 计算、初始单元和动态内容.
Shift+Enter 计算
由于 Shift+Enter 计算需要用户的交互来启动它们,Mathematica 没有对使用这一机制潜在的恶意代码进行保障. 用户应确保它们不从不可信来源执行 Shift+Enter 计算. 在编写自己的代码时,用户必须格外谨慎,以确保代码不会产生意想不到的后果. 例如,当用户计算一个程序以从他或她的计算机上删除文件的时候,Mathematica 不会提供一个警告.
初始单元
当用户首先计算笔记本中的任何输入时,初始单元给用户提供了计算给定该笔记本所需的启动代码. 由于该代码会自动计算,可能用户甚至没有看到该初始代码,Mathematica 会显示一个警告提示,询问用户确认他或者他的意图以运行代码. 除非代码已被确认为安全的,否则,用户不应该在一个笔记本中计算一个从不受信任的来源取得的初始代码.
动态内容
Mathematica 具有惊人的 动态交互. 包含交互 Dynamic 内容的笔记本可以自动计算代码,而不需要用户的任何其它操作,除了需要打开笔记本文件之外. 很多时候,这正是用户所希望的,而其它时候,用户应该在这种自动计算发生之前,被警告.
当用户打开一个包含动态内容的笔记本时,Mathematica 将首先判断该笔记本的目录是受信任的、不受信任的、或者两者都不是.
TrustedPath
选项值是总是被 Mathematica 信任的目录列表. 位于
中的任意目录的任意笔记本文件受 Mathematica 信任. 当一个受信任的笔记本被打开,Mathematica 将不会显示警告信息,而该笔记本可以自动执行动态计算.
默认情况下,
选项值包含 $InstallationDirectory、$BaseDirectory 和 $UserBaseDirectory,因此 Mathematica 初始化文件和其它被安装的应用将能够在不提醒用户的情况下,显示动态内容.
| In[3]:= |
| Out[3]= |
UntrustedPath
选项值是一个总是不受 Mathematica 信任的目录列表. 位于
的任意目录中的任意笔记本文件不受 Mathematica 信任. 当一个不受信任的笔记本打开并且试图执行动态计算时,Mathematica 将总是显示警告信息.
默认情况下,
选项值包含用户桌面文件夹(其中网络浏览器下载可能被存储)、用户配置文件夹(其中邮件附件可能被存储)以及电脑临时目录. 如果用户已经配置他或者她的网络浏览器或者邮件程序以在非标准地址中保存下载的文件,那么该用户可以把这些地址增加到
选项值.
Nesting
和
中的目录可以是嵌套的. 笔记本是受信任的,如果包含该笔记本的最深层嵌套的目录是受信任的话. 考虑下列例子:
- FrontEnd`FileName[{$HomeDirectory, "Desktop", "SafeNotebooks"}, "MyNotebook.nb"] 由于"SafeNotebooks" 是受信任的,将是受信任的.
TrustByDefault
选项决定当用户打开既不包含受信任、也不包含不受信任的具有动态内容的笔记本时,Mathematica 是否将显示警告信息. 以下是
选项的可能值.
| True | 一个不位于 |
| False | 一个不位于 |
| Automatic | 一个既不位于 |
不安全的动态内容
- 使用 文件 操作
- 使用通过 MathLink Mathematica 函数 的进程内通讯
- 使用 底层笔记本设计
- 通过 表达式和字符串间的转换 把数据作为代码使用
- 使用 名称空间的管理
- 使用 选项管理
- 使用 调用外部程序
改变选项值
、
和
是
类别中的选项. 它们可以使用 "偏好设置..." 对话框或者 "选项设置..." 改变.
任何试图对
、
或者
选项值的改变将引起 Mathematica 提示用户确认更改. Mathematica 把这作为一种安全预防措施,这使得恶意代码无法在用户不知情的情况下更改这些选项的值.

