找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1686|回复: 0

[验证开发] 如何实现特殊字符参数值GET传输的解决办法【附视频教程】

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

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

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

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

360截图20240909155737.png

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

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

第一步:在你开发的客户端上,进行文本替换,把 + 这个字符,用 _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_' => '+',
                '_dengyuhao_' => '=',
                '_xiaoyuhao_'=>'<',
                '_dayuhao_'=>'>',
                '_zuokuohao_'=>'(',
                '_youkuohao_'=>')',
                '_yinhao_'=>'"',
                '_danyinhao_'=>"'",
                '_wenhao_'=>"?",
                '_xiegang_'=>"/",
            ));
        return $value;//返回解密结果,替换password参数的值
    }

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




第八课:特殊字符的GET传输





第八课:特殊字符GET传输-高级演示







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

本版积分规则

QQ|Archiver|手机版|新秀网络验证系统API[软著登字第13061951号] ( 豫ICP备2021033257号-1 )

GMT+8, 2024-11-25 19:32 , Processed in 0.224730 second(s), 44 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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