检测发现你的小程序appid:******在通信过程中明文传输session_key(传输url:ttps://*******/getopenid),请去除请求和响应中的session_key,以便消除风险。
一、问题再现,如图
解决办法:去除后台返回小程序时session_key,这个返回值我的小程序是用不到所以可以直接去除。
后台返回小程序session_key和openid 去除session返回值后台返回小程序session_key和openid 去除session返回值/**
* 获取用户OPenid
* 微信开发者appId
* appId秘钥
* 获得POST请求提交的数据$_POST
*/
public function getopenid(){
$appid="******";
$secret="******";
$postdata = $_GET;
$code = $postdata['js_code'];
$api="https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code"; //调用官方接口
$getdata = file_get_contents($api);
//echo $getdata;die;
//2024-09-10 修改,去除session_key
$getdata = json_decode($getdata,true); //json格式数据解码成数组$
opendata['openid'] = $getdata['openid'];//仅将openid返回小程序
$opendata = json_encode($opendata,true); //数组转码成json格式数据
echo $opendata;die;//必留的一段代码 */
封装如下图
其中,Tools::ToUrlParams($getParam),是封装的格式化成url参数的方法。
/**
* 格式化参数格式化成url参数
*/
public static function ToUrlParams($values)
{
ksort($values);
$buff = "";
foreach ($values as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
其中Tools::curl_request($url) 是封装的curl。
示例:
/**
* @todo 封装curl
* @param $url 访问的URL
* @param string $post post数据(不填则为GET)
* @param string $cookie 提交的$cookies
* @param int $returnCookie 是否返回$cookies
* @return mixed|string
*/
public static function curl_request($url,$post='',$cookie='', $returnCookie=0){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
if(substr_count($url,'https://')){
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
}
if($post) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
}
if($cookie) {
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
}
curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
if (curl_errno($curl)) {
return curl_error($curl);
}
curl_close($curl);
if($returnCookie){
list($header, $body) = explode("\r\n\r\n", $data, 2);
preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
$info['cookie'] = substr($matches[1][0], 1);
$info['content'] = $body;
return $info;
}else{
return stripslashes($data);
}
}
//======================
注意json和数组间的转换
//仅做示例
wx.request({
url:'https://s.istang.vip/index/nkuserlogin/getopenid',
data: {js_code: res.code},
success:(res)=>{
console.log(res.data); //输出查看返回值
this.setData({
useropenID:res.data.openid,
hasUserInfo:true
})
wx.setStorageSync('useropenID', res.data.openid)
}
})
最终返回值只留openid:
转载请以链接形式注明出处:
本篇文章来源于 "中栖梧桐云" :https://www.womtech.cn
中栖梧桐云 版权与免责声明:
① 凡本网注明“来源:中栖梧桐云”的所有作品,版权均属于中栖梧桐云,版权归中栖梧桐云所有,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:中栖梧桐云”。违反上述声明者,本网将追究其相关法律责任。
② 凡本网注明“来源:XXX(非中栖梧桐云)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
③ 本网部分内容来自互联网,如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※ 联系方式:中栖梧桐云 Email:jinostart@126.com