在tp5中过滤输入的零宽度字符【fastadmincms开发记录】

在TP5(ThinkPHP 5)中过滤输入的零宽度字符(如零宽度空格、零宽度连字符等),可以采用以下几种方法:

### 1. **使用内置过滤器**:

TP5提供了多种内置的字符串过滤器,可以方便地应用于数据清洗。虽然TP5内置过滤器中并没有专门针对零宽度字符的过滤器,但可以使用`remove_xss`过滤器来去除潜在的恶意字符,其中包括部分零宽度字符。在控制器中处理请求数据时使用:

```php

use think\Request;

class SomeController

{

    public function someAction(Request $request)

    {

        $input = $request->param('input_field');

        // 使用内置过滤器移除潜在的零宽度字符和其他XSS攻击字符

        $filteredInput = $request->filter('remove_xss', $input);

        // 现在可以安全地使用$filteredInput

    }

}

```

### 2. **自定义过滤器**:

如果内置过滤器不足以满足需求,可以创建自定义过滤器来专门处理零宽度字符。在`application/common.php`或对应的控制器中添加一个自定义过滤函数:

```php

function filterZeroWidthChars($str)

{

    // 使用正则表达式匹配并替换常见的零宽度字符

    $zeroWidthChars = [

        "\u{200B}", // Zero Width Space (ZWSP)

        "\u{200C}", // Zero Width Non-Joiner (ZWNJ)

        "\u{200D}", // Zero Width Joiner (ZWJ)

        // 添加其他需要过滤的零宽度字符

    ];

    $pattern = '/[' . implode('', $zeroWidthChars) . ']/u';

    return preg_replace($pattern, '', $str);

}

```

然后在处理请求数据时调用这个自定义过滤器:

```php

class SomeController

{

    public function someAction(Request $request)

    {

        $input = $request->param('input_field');

        // 使用自定义过滤器移除零宽度字符

        $filteredInput = filterZeroWidthChars($input);

        // 现在可以安全地使用$filteredInput

    }

}

```

### 3. **全局过滤器**:

如果需要对所有输入数据进行零宽度字符过滤,可以配置全局过滤器。在`config/app.php`中添加:

```php

// config/app.php

return [

    // ...

    'default_filter' => 'remove_xss|filterZeroWidthChars', // 使用自定义过滤器名称

];

```

这样,所有通过`Request::param()`、`input()`等方法获取的请求数据都会自动经过`remove_xss`和`filterZeroWidthChars`过滤器处理。

### 4. **模型层验证**:

如果在模型中进行数据验证,可以在模型的验证规则中加入自定义验证方法:

```php

// application/common/model/BaseModel.php 或 直接在具体模型类中

use think\Model;

class BaseModel extends Model

{

    protected $append = ['filtered_input'];

    protected function getFilteredInputAttr($value, $data)

    {

        return filterZeroWidthChars($data['input_field']);

    }

    // 在模型中定义验证规则

    protected function validateInput($value)

    {

        if (!preg_match('/^[^\p{C}\p{Z}]++$/u', $value)) {

            return '输入包含非法字符(如零宽度字符)';

        }

        return true;

    }

}

// 在具体模型类中使用验证规则

class SomeModel extends BaseModel

{

    protected $rule = [

        'input_field' => 'validateInput',

    ];

}

```

通过以上方法,可以在TP5中有效地过滤输入数据中的零宽度字符,保障数据的清洁性和安全性。选择最适合您项目需求的方案进行实施,并结合前端验证、后端过滤和数据库层面的防御措施,形成全方位的数据安全防护体系。


正文主题开始

文件路径

\thinkphp\library\think\Request.php

大概1047行

温馨提示! 你需要支付 ¥9.90 元后才能查看付费内容
点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

触发修改文章时间【fastadmincms开发记录】|fastadmincms二次开发,触发,修改,文章,时间,fastadmin,ms,开发,记录
触发修改文章时间【fastadmincms开发记录】
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】|fastadmincms二次开发,在tp5中,过滤,输入,的零,宽度,字符,fastadmin,ms,开发,记录
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】
处理tag标签中的0宽空格【fastadmincms开发记录】|fastadmincms二次开发,处理,tag,标签,中的,0宽,空格,fastadmin,ms,开发,记录
处理tag标签中的0宽空格【fastadmincms开发记录】
添加专题时tags标签id出错【fastadmincms开发记录】|fastadmincms二次开发,添加,专题,时tags,标签,id,出错,fastadmin,ms,开发,记录
添加专题时tags标签id出错【fastadmincms开发记录】
20230518----模板 广告【fastadmincms开发记录】|fastadmincms二次开发,20230518,模板,广告,fastadmin,ms,开发,记录
20230518----模板 广告【fastadmincms开发记录】
cms添加视频模型【fastadmincms开发记录】|fastadmincms二次开发,ms,添加,视频,模型,fastadmin,开发,记录
cms添加视频模型【fastadmincms开发记录】
新增单篇收费复制功能【fastadmincms开发记录】|fastadmincms二次开发,新增,单篇,收费,复制,功能,fastadmin,ms,开发,记录
新增单篇收费复制功能【fastadmincms开发记录】
添加开会员折扣功能【fastadmincms开发记录】|fastadmincms二次开发,添加,开会,折扣,功能,fastadmin,ms,开发,记录
添加开会员折扣功能【fastadmincms开发记录】

历史上的今天:04月30日

热门专题

天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
云南综合高中|云南综合高中
云南综合高中
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
弥勒综合高中|弥勒综合高中
弥勒综合高中
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
昆明综合高中|昆明综合高中
昆明综合高中

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部