如何实现特殊字符参数值GET传输的解决办法【附视频教程】
在本框架API接口使用中,由于DISCUZ内置的防注入系统,导致在传输特殊字符时产生报错,下面我们就来解决这个问题:展示部分特殊字符:!@#¥%……&*()——+?/
例如:我们使用登录接口,其中有一个密码后面有 + 这个特殊字符,我们应该怎么办?
第一步:在你开发的客户端上,进行文本替换,把 + 这个字符,用 _jiahao_ 来代替; 【+ → _jiahao_】
那么原密码是:demo+ 被文本替换成 demo_jiahao_,这样在传输过程中就没有特殊字符了。
第二步:通过二次扩展获取 passwrod这个密码传输参数,将 _jiahao_ 替换成 + ; 【_jiahao_ → +】
以下是验证扩展-内置钩子扩展实例:
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内置防注入系统。
static/image/hrline/1.gif
第八课:特殊字符的GET传输
http://www.xinxiuvip.com/net_network/video/接口开发视频教程/第八课:特殊字符的GET传输.mp4
第八课:特殊字符GET传输-高级演示
http://www.xinxiuvip.com/net_network/video/接口开发视频教程/第八课:特殊字符GET传输-高级演示.mp4
页:
[1]