ggomez/anonymization

数据库匿名化模块

1.2.0 2018-07-06 13:45 UTC

This package is not auto-updated.

Last update: 2024-09-22 03:37:37 UTC


README

匿名化 是一个PHP库,可以帮助您快速动态地对数据库进行匿名化。

注意:数据将永久修改

安装

composer require ggomez/anonymization

数据库匿名化模块

您只需以这种方式调用类

<?php
require_once __DIR__ . '/vendor/autoload.php';

use Anonymization\Anonymization\Anonymous as Anonymous;

$a = new Anonymous();
$a->start();

匿名化类构造函数接受两个参数

  • 匿名化配置文件
  • 匿名化配置数据库连接

然而,构造函数默认使用路径中的文件: vendor/ggomez/anonymization/src/Config

匿名化最重要的部分之一是配置文件。在上面的路径中,您将找到YML、JSON、PHP 3种允许格式的示例。

保持结构非常重要,在这种情况下,我们有一个名为 "Test" 的数据库,然后在第二部分是敏感词部分,在这一部分我们将描述所有想要更改的词,第一个是我们要更改的词,第二个是我们要添加到数据库中的词。

在第一部分仅指示要匿名化的数据库,在第二部分指定可能揭示某人身份的敏感词,最后,在最后一部分插入数据库匿名化所需的所有设置。

##Database name
Data_base: Test

##Insert all sensitive information that you want to change
KeyWord:
  Psychiatry: XXXX

##Only integer numbers
Counter: 10000

##Tables that you want to change
Tables:
  fos_user:
    alias: fos_user fosu, RandomData rd
    mapping:
      email: fosu.email = |email
      email_canonical: email_canonical = rd.email
      first_name: first_name = rd.firstname
      last_name: last_name =  rd.lastname
      created_by: created_by = |User#*gmail.fr
      updated_by: updated_by = |UserJ#*
      username: username = |UserL#*
      username_canonical: username_canonical = |UserE#*
    condition: " WHERE (MOD(fosu.id,1499) +1) = rd.id"

数据匿名化有3种选项

  • 从给定格式生成数据
  • 在这种情况下,星号字符将变为数字,例如,如果我们有一个用户名在此字段,我们将得到一个通用的格式,带有连续的数字
tiers:
    alias: fos_user fos, RandomData rd
    mapping:
     username: fos.username = |User#*
  • 从RandomData表生成新数据
    • 当执行库时,将加载一个临时表,其中包含随机数据,可用于匿名化完整表
    tel: t.tel = rd.phone
  • 生成新数据
    • 如果您想生成随机数据,如地址或电话号码,可以使用以下语法
    email: email = |email

在所有情况下,建议使用条件,特别是以下语法建议在您想使用RandomData表的情况下,这样做是为了在表的每一行中获得不同的结果

condition: ' WHERE (MOD(t.id,1499) +1) = rd.id'