Download the PHP package az13js/desensitization without Composer

On this page you can find all versions of the php package az13js/desensitization. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package desensitization

desensitization ,一个给 PHPer 用的数据脱敏包

安装

假设你正确安装了 Composer 和 JSON 、 mbstring 扩展。然后就像是一般的 Composer 包一样,你可以通过如下方式安装:

composer require az13js/desensitization

一般这会从 上获取元数据并去 Github 上下载代码。

当然你还可以在 composer.json 中配置下面的属性:

然后执行 ,从 Gitee 上直接下载开发中的分支。

对某些不支持 Composer 的项目,可能你需要通过包含 引入类的自动加载功能。

用法

首先需要在项目加载的时候配置,然后返回响应内容给前端之前用 函数过滤。下面是一个简短的示例:

输出内容如下:

内部逻辑是: 会在请求地址符合 配置的条件时,递归地检测 传入的内容,对内容中符合 配置的键名调用对应的函数进行处理。

在这个示例中,响应内容包含 和 这两个键。 配置为对所有URI都返回 ,并且 配置为遇到 键的时候将其值改写为 ,所以最终返回给前端的内容中 被 隐藏了。 在这里没有配置,所以原样返回。

特性

多层数组

遇到多层数组的时候, 会递归子数组,遍历它们的键。例如:

响应内容为:

匹配键的相对路径

支持通过像 这样,点连接多个键名指定符合这个规则的值进行处理。只需要开启 ,例如:

响应内容为:

对象类型

确定需要进行脱敏处理的时候, 会在实际遍历之前通过 和 对内容进行转换。这意味着在实际遍历响应内容时,所有对象都被转换掉了,如下:

输出:

array(2) {
  ["name"]=>
  string(3) "**"
  ["mobile"]=>
  string(11) "13699999999"
}

配置匿名函数

默认 配置的匿名函数接收的参数 是 。在 不存在的情况下, 永远不会处理传入的内容。你可以利用 设置或者改写这个URI,这在像 Swoole 这种无法通过 获取请求路径的环境下会很有用:

你可以设置 为 来恢复默认的行为:

属性 的作用是,你可以判断符合某些条件的URI启用脱敏处理,另外的URI不进行处理。例如下面示例判断当前请求路径是否以 开头,如果是那么启用脱敏处理,如果不是那么不处理原样返回。

顺便一提,方法 的第二个参数可以强制指定一个URI,这将会忽略 中设置的 配置和忽略 。

数组配置

当你的要求不是那么复杂的时候,可以用数组来配置,无需编写匿名函数。

数组配置

配置项 的目的无非是确定哪些URI是需要开启脱敏的,所以完全可以给一个正则表达式来达到相同目的。配置方式如下:

这里的正则表达式将匹配以 开头的请求地址,如果匹配成功那么将会开启脱敏处理。

数组配置

大部分脱敏处理可以简单地使用类似 这样的字符去掩盖一部分字符,让前端不显示完整的内容就可以了。 数组配置能做到这一点。你只要配置一个整数,告诉 需要在左侧或者右侧掩盖多少个字符,或者用浮点数配置告诉 需要掩盖多少占比的内容就行了。

同时, 内使用了 mbstring 扩展所提供的函数进行字符串操作,可以兼顾处理中文和英文字符的需要。

基本配置

基本配置方式如下, 和 是可选的,它们默认为 。

整数类型配置字符个数

整数配置时,认为你需要掩盖的是若干各字符。例如:

返回内容:

这里会用 把左侧3个字符和右侧3个字符掩盖掉。

浮点数类型配置占比

浮点数配置时,认为你需要掩盖的是总字符长度的一定占比。例如:

返回:

可以看到, 总长度为20个字符,经过处理后左侧的 20% 和右侧的 20% (也就是各占比 0.2 )的部分被符号 掩盖了。

浮点数取整方式

在使用占比配置方式计算需要在左右掩盖多少个字符的时候,内部默认是采用四舍五入的方式进行取整,也就是调用函数 。这在一些特殊情况下可能不满足需要。 的数组配置 和 属性接受一个具有两个元素的数组,其中第一个元素还是作为掩盖的占比,第二个元素则作为一个回调函数用来取整。

例如如果你希望计算的时候向上取整,目的是尽可能多地掩盖左侧的内容时,可以这样:

返回:

此时, 的 20 个字符,计算时按照 算出应该掩盖 11 个字符。

掩盖中间部分

默认配置是掩盖左侧和右侧的字符,如果你想要中间的部分被掩盖,那么可以设置 属性为 开启反方向掩盖。例如:

返回:

设置掩盖符号

默认情况下, 采用符号 来掩盖字符。你可以通过 属性来配置掩盖时采用的字符或者字符串。例如:

返回:

内置的掩盖方式

包内置了一些掩盖方式,可以设置 属性来使用。 的优先级比自定义的 、 和 等属性要高,换句话说使用 时忽略 、 、 等属性。

例如内置的手机号掩盖规则可以这样来启用:

或者,你可以用简化方式,所有内置掩盖类型都可以直接配置 的值为字符串来直接应用:

下面是所有内置的掩盖方式,它们都支持通过 或者直接设置值为字符串的方式来配置。

credential - 普通证件号

除了身份证之外的,如护照、军官证件等。保留前1位和后1位,其余掩盖。

返回:

idcard - 身份证号码

保留前2位和后2位,其余掩盖。

返回:

bank - 银行卡号码

保留前4位,后4位,其余掩盖。

返回:

netaccount - 网络账号

QQ、微博、微信(含微信小程序id、支付宝用户ID等)。保留第1位和最后1位,其余掩盖。

返回:

ip - IP地址

掩盖后6位。

返回:

mobile - 手机号码

连续掩盖自第4位开始的4位数字(不考虑国家号)。

返回:

telephone - 座机号码

保留区号和后2位,其余掩盖。自动识别括号 和 ,自动识别 和 ,最后识别不出来取前3位作为区号。

返回:

name - 姓名

掩盖姓氏。如果2个或3个字符,那么第一个认为是姓氏,如果大于3个字符,前面一半认为是姓氏。

返回:

plate - 车牌号码

保留前后两个字符。

返回:

email - 电子邮件

@前的字符显示前3位,3位后掩盖,@后面完整显示。

返回:

address - 地址

按顺序识别 ,识别到了就隐藏后面的。

返回:

{
    "example":"胶州市********"
}
一些注意点

多项配置

可能存在一种情况,普通接口你想要对name属性进行处理,b接口只需要对name1属性处理,c接口只需要对name2属性处理。这里提供属性 group 用来支持这种场景。该属性能定义多个 dotincluderoles 等可配置属性的配置对,优先级高于外层的。这样 group 成功地匹配到URI的时候,将会应用 group 里面对应的规则,而不会应用外层的。

配置示例:

输出:

array(3) {
  ["name"]=>
  string(2) "**"
  ["name1"]=>
  string(9) "周杰伦"
  ["name2"]=>
  string(9) "周杰伦"
}
array(3) {
  ["name"]=>
  string(9) "周杰伦"
  ["name1"]=>
  string(2) "**"
  ["name2"]=>
  string(9) "周杰伦"
}
array(3) {
  ["name"]=>
  string(9) "周杰伦"
  ["name1"]=>
  string(9) "周杰伦"
  ["name2"]=>
  string(2) "**"
}

脱敏前后对数据进行处理

如果你希望在脱敏前、脱敏后对响应的数据进行一些处理,例如添加点属性或者修改已有属性内容,那么你可以使用 beforeafter 属性进行配置。

例如下面这个示例在脱敏前把 name 属性的内容复制,并赋值到新增属性 backup 上,脱敏后又新增了一个属性 note

响应内容:

{
    "name":"*杰伦",
    "backup":"周杰伦",
    "note":"before: 周杰伦, after: *杰伦"
}

同样的, beforeafter 也能在 group 内使用。可以再次赋值为 null 来取消 beforeafter 配置的匿名函数。


All versions of desensitization with dependencies

PHP Build Version
Package Version
Requires php Version ^7.0
ext-json Version *
ext-mbstring Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package az13js/desensitization contains the following files

Loading the files please wait ....