ujamii / ujamii-dsgvo
TYPO3的DSGVO合规扩展
Requires
- php: >=7.3.0
- ext-pdo: *
- typo3/cms-core: >=9.5.0 <11
README
TYPO3数据隐私/DSGVO合规扩展
版本
描述
2018年5月25日,关于数据隐私保护的新法律将生效。根据规定,违规的罚款最高可达2000万欧元,或国际公司的全球收入的4%,在欧洲联盟运营的每个组织(商业和非商业)都必须遵守链接文档中描述的法规。
对于TYPO3网站,这有几项影响
- 数据库中的私人数据需要被删除(而不是设置
deleted=1
) - 向网络服务器或邮件服务的传输数据需要加密
- 联系方式和隐私信息需要在单独的网站上(至少在德国)
- 用户必须被告知有关永久cookies,并且有权选择退出跟踪服务
- ...
此扩展旨在帮助识别可能的问题以及执行常规任务,如清理数据库和删除“已删除”记录以及旧表单中的数据。
链接
安装
- 获取文件
- 通过composer安装:
composer require ujamii/ujamii-dsgvo
- 通过存档安装: 下载并在
typo3conf
目录中解压缩,将文件夹重命名为ujamii_dsgvo
- 通过composer安装:
- 在后台激活扩展(可能需要清除自动加载缓存)
- 主模块“web”中会出现一个新的子模块“DSGVO”
使用
操作模式
此扩展可以在数据库中计数、匿名化或真正删除记录。后端模块使用选择模式来显示概览。您可以通过以下两个按钮开始用虚拟数据覆盖记录的过程(匿名化)或删除。
删除记录可能会对数据完整性造成损害,因为TYPO3默认不使用数据库级别的约束。因此,删除模式不是默认模式!如果您确实想要删除记录,请明确使用此模式/按钮。请注意,如果您向配置中添加更多表,则匿名化模式在未设置anonymize
部分的情况下将不会执行任何操作!您还必须自己注意正确的数据格式。在字段=值列表中写入错误的数据类型可能导致错误。匿名化模式也会写入tstamp
和crdate
字段(如果已在TCA中配置)。这些字段的值将是0。这是这些行已被处理的指示器。因此,带有tstamp = 0 AND crdate = 0
的行将不会被计数/处理。如果您自己从TYPO3数据处理器外部创建记录,请检查这些字段在数据库写入后不是0。
为了更大的灵活性,数据库中覆盖数据的值通过 PageTS 进行配置。因此,如果您想添加自己的表格,只需添加 anonymize
部分,扩展程序也会处理您的数据。
在 TYPO3 后端
点击主后端菜单中的模块图标(在 "web" 内)。您将看到每个配置的扩展和数据库表的总览。绿色行表示没有需要删除的,红色行表示如果点击页面底部的红色 "删除" 或橙色 "匿名化" 按钮,将会删除/匿名化某些内容。受影响行数也会在总览页面上显示。
作为壳上的 CommandController
例如,调用 vendor/bin/typo3cms cleanup:cleandatabase --page-uid=1 --mode=select
将会输出类似以下内容:
2018-04-06 17:27:01 FALSE means Extension not installed, integer is amount of affected records. array(5 items) core => array(2 items) fe_users => 0 (integer) be_users => 0 (integer) powermail => array(1 item) tx_powermail_domain_model_mail => 0 (integer) formhandler => FALSE tt_address => FALSE comments => FALSE
--mode=
参数的可能值包括:
- select(仅计算行数,不更改数据库)
- anonymize(用配置的值覆盖行,见 pagets.ts)
- delete(执行其名称所表示的操作,真的从数据库中删除行)
扩展数据库清理
要扩展在后台或通过 CLI/调度程序执行的数据库清理,您只需编写一些 typoscript 并将其添加到您网站的 pageTS 中。
您可以添加多个表格,按扩展分组。起始级别为 module.tx_ujamiidsgvo_dsgvocheck.settings.db
,下一级是扩展名(例如 powermail
),然后是表名。
选项 allDeleted
可以是 0(默认值)或 1。如果设置为 1,则每次运行过程都将使用此表中的所有 deleted=1 记录。从 TCA 中读取 delete
字段名称。
设置 andWhere
选项将限制过程中涉及的数据库中的行。因此,如果您留空,则 该表中的所有记录都将被处理!!! 所以您最好事先考虑一下;-)
powermail 扩展的示例
module.tx_ujamiidsgvo_dsgvocheck {
settings {
db {
powermail {
tx_powermail_domain_model_mail {
allDeleted = 1
andWhere = crdate < UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 6 MONTH))
anonymize {
sender_name = anonymized
sender_mail = anonymized
//...
}
}
}
}
}
}
要查看默认情况下覆盖的表格,请查看 pagets.ts。如果您只想删除特定表的记录,可以完全跳过 anonymize
部分。
已弃用!Cookie同意
此功能已弃用,将在下一个主要版本中删除!如果您需要在 TYPO3 中管理 cookie,请使用类似 Wacon Cookie Management 的解决方案。
如果您在网站上使用 cookie,您至少需要通知您的用户,并提供对不必要于网站/服务本身且/或包含用户某些私人信息的 cookie 的退出选项。遗憾的是,动态 IP 地址也被视为信息的私人值(至少在德国是这样)。
因此,使用第三方现成的解决方案可能就足够了。此扩展提供了一个基于 cookieconsent.insites.com 的示例。要在您的 TYPO3 项目中使用它,只需将 partial 模板 复制到您的项目部分路径,然后像这样将其包含在您的 fluid 模板中:
<f:render partial="Frontend/CookieConsent" />
如果您想直接使用示例,只需将部分文件夹添加到您的 fluid 路径中
10 = FLUIDTEMPLATE
10 {
file = ...
partialRootPaths {
0 = ...
1 = EXT:ujamii_dsgvo/Resources/Private/Partials/
}
layoutRootPaths.0 = ...
}
要配置目标页面,只需在您的 typoscript 常量 中设置 page.privacyInfo = xyz
,其中 xyz
是页面的 uid。如果您想更改如何包含此 cookie 允许,请查看 setup.ts
退出Cookie
Google Analytics
如果您想选择退出跟踪cookie,您需要添加一些JavaScript代码,并提供一个触发退出功能的链接或按钮。在TYPO3后端,您可以在隐私信息页面上创建一个新的内容元素来完成此操作。添加一个类型为 "HTML" 的新元素,粘贴以下示例代码(假设使用Bootstrap CSS):
<a href="javascript:gaOptout();window.alert('Tracking has been disabled.');" class="btn btn-danger">I do not want to be tracked</a> <a href="javascript:gaOptout();window.alert('Tracking wurde deaktiviert.');" class="btn btn-danger">Ich will nicht getrackt werden</a>
您可能还想添加更详细的描述,例如
您可以选择停用Google Analytics跟踪。要停用,请点击下面的按钮。浏览器中将会创建一个cookie。如果cookie被设置,Google Analytics将不再记录任何数据。
或者用德语
Sie können das Web-Tracking von Google Analytics abschalten. Klicken Sie dazu auf den unten stehenden Button. Es wird dann ein Cookie in Ihrem Browser gesetzt. Wenn der Cookie erstellt wurde, wird Google Analytics keine Daten mehr erheben.
Matomo(之前称为Piwik)
Matomo在其跟踪应用程序内部提供了一组可直接使用的代码片段,因此只需按照他们网站上的说明操作即可。
TODOs / 已知问题
请查看GitHub上的问题列表。
图标来源
图标下载自https://www.flaticon.com/free-icon/database-protection_1825
图标由Freepik从www.flaticon.com制作,并受CC 3.0 BY许可。