數据加密
From LimeSurvey Manual
简介
資料加密功能旨在帮助调查管理员更好地应对世界各地出台的新数据保护法规(例如 GDPR)。
此功能可对存储在参与者中央数据库和/或调查参与者表中的个人資料进行加密。此外,如果启用了加密问题属性,您还可以对从受访者处收集的資料进行加密。
请注意,您的資料在 LimeSurvey 界面中始终可见。只有数据库中的条目会被加密——任何能够访问 LimeSurvey 所在服务器的人都无法查看相应的資料。因此,请谨慎授予他人全局权限和调查权限。
何时应加密您的資料?
这个问题没有唯一正确的答案,主要取决于:
- 您收集的資料类型
- 您的调查所在的地区
- 国家或联邦法律
在大多数情况下,加密可识别个人身份的資料非常重要(例如《通用数据保护条例》中所建议的)。因此,名、姓、电子邮件地址、电话号码、住址等字段都可用于识别某个人提交的回复。
在其他情况下,需要加密的資料不一定仅限于上述示例。在某些场景下(例如医学研究),如果可以将回复追溯到提交者本人,您可能需要加密大部分資料。
因此,请根据当地法律调整您的调查和資料收集方式!
设置
LimeSurvey 中有三处可以设置資料加密:
问题属性
问题属性“加密”用于对相应的回复启用資料加密。此属性默认关闭。调查一旦激活,就无法再更改此属性。

参与者属性
三个核心属性(名、姓和电子邮件)始终显示在调查参与者表中,且默认开启加密。
每个新增的参与者属性默认关闭加密。
加密可以随时开启或关闭。
参与者中央数据库属性管理
三个核心属性(名、姓和电子邮件)始终显示在参与者中央数据库中,且默认开启加密。
每个新增的参与者属性默认关闭加密。
加密可以随时开启或关闭。
高级
LimeSurvey 使用 Sodium 库来提供資料加密和解密功能。
Sodium 是一个现代、易用的软件库,可用于加密、解密、签名、密码哈希等。它是 NaCl 的一个可移植、可交叉编译、可安装、可打包的分支,具有兼容的 API,并扩展了 API 以进一步提高易用性。其目标是提供构建高层加密工具所需的全部核心操作。
Sodium 跨平台、跨语言。它可在多种编译器和操作系统上运行,包括 Windows(使用 MinGW 或 Visual Studio,x86 和 x86_64)、iOS 和 Android。同时也提供 Javascript 和 WebAssembly 版本,并得到全面支持。所有常用编程语言均有相应的绑定,并且支持良好。
PHP 编程语言 7.2.0 及更高版本包含 Sodium 扩展(称为 ext/sodium),作为核心加密库。PECL 中 PHP 扩展的第 2 版与 PHP 7.2 中的 ext/sodium 兼容。
LimeSurvey 使用 Sodium Compat 库来兼容不同的 PHP 版本。
该库初步支持 PHP 5.2.4 至 7.x(最新版),但官方仅支持未终止支持的 PHP 版本。
LimeSurvey 中使用的数据加密/解密方法基于公钥签名。公钥和私钥可在 /application/config/security.php 文件中找到。密钥会在首次使用加密功能时自动生成。
对于包含加密数据的数据库列,无法进行部分字符串搜索,只能进行精确匹配搜索。
错误
使用数据加密时可能出现的错误:
- 库不存在:必须安装 PHP Sodium 库才能使用数据加密功能。以下是安装该库的指南:Sodium 安装。如果您不想使用数据加密,则必须在属性设置中禁用加密。
- 解密密钥错误:自上次保存数据以来,解密密钥已发生更改,因此无法解密数据。解密数据的唯一方法是从备份中找回原始密钥,并用原始密钥替换当前的解密密钥。
注意:如果仅在 LimeSurvey 发送电子邮件时(例如在您完成调查后)出现“解密密钥错误”,请前往“配置”>“全局设置”>“电子邮件设置”,重新输入您的 SMTP 密码并点击“保存”。[1]
否则,您仍可以尝试对比并设法从备份中恢复您的解密密钥(您有做备份吧?嗯?)。