找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 380|回复: 0

[验证开发] 如何实现特殊字符参数值GET传输的解决办法

[复制链接]
发表于 2024-4-12 23:36:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×


在本框架API接口使用中,由于DISCUZ内置的防注入系统,导致在传输特殊字符时产生报错,下面我们就来解决这个问题:


展示部分特殊字符:!@#¥%……&*()——+

例如:我们使用登录接口,其中有一个密码后面有 + 这个特殊字符,我们应该怎么办?

第一步:在你开发的客户端上,进行文本替换,把 + 这个字符,用 _jiahao_ 来代替; 【+ → _jiahao_

那么原密码是:demo+ 被文本替换成 demo_jiahao_,这样在传输过程中就没有特殊字符了。

第二步:通过二次扩展获取 passwrod这个密码传输参数,将 _jiahao_ 替换成 +
_jiahao_ → +

以下是验证扩展-内置钩子扩展实例:

[PHP] 纯文本查看 复制代码
    public function hook_param_password($params,$value){//所有参数调用
        /**
         * 批量替换文本
         * @param $str // 源文件
         * @param array $array //替换规则 array('要改变的字符'=>'要改变为的字符')
         * @return string //返回替换源文件
         */
        $value = xx_convert::str_replace_array($value, array(
            '_jiahao_' => '+',
        ));
        return $value;//返回解密结果,替换password参数的值
    }

总结:通过在客户端对特殊字符进行文本替换传输,再到插件后台利用扩展开发进行替换文本,达到传输特殊字符的双向传输,有效的绕过DISCUZ内置防注入系统。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|新秀网络验证系统API ( 豫ICP备2021033257号-1 )

GMT+8, 2024-6-14 00:27 , Processed in 0.177272 second(s), 47 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表