首页 > 增值服务 > 学习中心

关于小程序session_key安全问题的通知 解决办法

更新时间:2024-09-14 作者:中栖梧桐

 检测发现你的小程序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

最新活动

分类

立即注册,开启您的0门槛上融媒体云之旅!

免费试用

关注联系我们

微信公众号 微博

联系我们

热门推荐

快速入口

支持与服务

全部行业解决方案

    友情链接

©2021-2025 中栖梧桐 京ICP备15002495号-2 京公网安备11011402013126

    联系我们

售前电话咨询 13910566257 售后电话咨询 13910426449 更多