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