玩机大学测试手机号注册账户功能时,发现会将 WordPress 的$user_nicename(别名)、$nickname(昵称)、$display_name(公开显示名)字段设置为完整的手机号。如此,用户在网站的留言和个人主页会直接显示手机号,导致个人隐私泄露。
过滤钩子
虫子菌在 WordPress 官网找到了这些字段的过滤钩子,注册账号时,按照保留手机号后四位数+年月日时八位数组合的形式,生成统一规格的别名、昵称和公开显示名,确保了用户手机号的隐私安全。
- ⭕pre_user_nicename //nickname(昵称)
- ⭕pre_user_display_name //display_name(公开显示名)
- ⭕pre_user_nickname //user_nicename(别名)
具体代码
//使用手机号注册时,过滤并自定义昵称/别名/公开显示名 //教程 function filter_pre_user_display_name($display_name) { $nb_name=substr($display_name,-4); //手机号后四位 $time_name= date('ymdH'); //年月日时,如 22042719 $display_name=$nb_name."-".$time_name; return $display_name; }; add_filter( 'pre_user_display_name', 'filter_pre_user_display_name', 10, 1 ); function filter_pre_user_nickname( $nickname ) { $nb_name=substr($nickname,-4); //手机号后四位 $time_name= date('ymdH'); //年月日时,如 22042719 $nickname=$nb_name."-".$time_name; return $nickname; }; add_filter( 'pre_user_nickname', 'filter_pre_user_nickname', 10, 1 ); function filter_pre_user_nicename( $user_nicename ) { $nb_name=substr($user_nicename,-4); //手机号后四位 $time_name= date('ymdH'); //年月日时,如 22042719 $user_nicename=$nb_name."-".$time_name; return $user_nicename; }; add_filter( 'pre_user_nicename', 'filter_pre_user_nicename', 10, 1 );
将代码复制到所用主题的 functions.php 文件内的最后面,保存生效。
拓展阅读- WordPress 用户名相关字段
- ⭕user_login:用户名,注册时输入的用户名,WordPress 默认不支持中文名;
- ⭕user_nicename:别名,作者的文章列表页 URL,最长支持 50 个字符;
- ⭕first_name:名字;
- ⭕last_name:姓氏;
- ⭕display_name -公开显示名,可用模板函数 the_author()调用显示文章的作者,有些主题的评论者也可能使用该字段显示。
- ⭕nickname:昵称,是 display_name(公开显示的名称) 的一个选择选项,这个字段在wp_usermeta表里面的,以上的其它字段都在wp_users表内;
更多手机号码的隐藏过滤的方法
采用 WordPress 过滤钩子、自定义函数或 SQL 的方式,对手机号进行脱敏处理,避免再网站出现完整的手机号码泄露用户隐私。
暂无评论
要发表评论,您必须先 登录