1.【PHP】微信支付JsApi40163错误
2.分析Discuz 3.4 越权登陆漏洞分析
3.手把手教你将小程序项目跑起来真自律小程序
【PHP】微信支付JsApi40163错误
本文将和大家分享一下微信支付JsApi 错误以及解决方案代码。查看查
错误:
未定义数组索引:openid 。源码
经过检查发现是查看查 :微信支付授权获取 openId { “errcode”:,“errmsg”:“code been used”,}
原因为:微信支付code 只能使用一次,当第二次重复使用时就会出现此错误。源码
解决相关参考:/content/php/
参考中的查看查方法本人尝试无果,故自己根据原因重写:
经排查发现问题出在:
WxPay.JsApiPay.php中的源码netbean源码解析GetOpenid方法,源码为:
/** * * 通过跳转获取用户的openid,跳转流程如下: * 1、查看查设置自己需要调回的源码url及其其他参数,跳转到微信服务器/connect/oauth2/authorize * 2、查看查微信服务处理完成之后会跳转回用户redirect_uri地址,源码此时会带上一些参数,查看查如:code * * @return 用户的源码openid */public function GetOpenid(){ //通过code获得openid if (!isset($_GET['code']) ){ //触发微信返回code码 $baseUrl = urlencode('/connect/oauth2/authorize * 2、微信服务处理完成之后会跳转回用户redirect_uri地址,查看查此时会带上一些参数,源码如:code * * @return 用户的查看查openid */public function GetOpenid(){ //通过code获得openid if (!isset($_GET['code']) ){ //触发微信返回code码 $baseUrl = urlencode('mon_member_wechatmp表查询对应openid的第一条结果,接着从common表中获取该uid的所有信息,并设置该用户为登录状态。
根据代码逻辑,如果攻击者能获取到某个用户的充值活动源码openid,则可越权登录该用户的账号。然而,微信接口文档显示openid是唯一的,并且只有用户授权后公众号才能获取到。从作者提供的payload来看,似乎并没有直接使用openid参数。
实际上,payload只是尝试登录openid为空的第一个用户。在当前情况下,单号上传源码通过/plugin.php?id=wechat:wechat&ac=wxregister&username={ name}的方式可以产生openid为空的情况,但同时也会创建一个新的账号。
作者提及,如果用户尝试绑定微信但绑定失败,openid会为空,但具体的绑定方法没有明确说明。利用此漏洞,攻击者可以遍历并登录所有openid为空的账户,依次登录、vxworks源码剖析解绑、再登录下一个。
针对此漏洞,最新版本的Discuz已删除了相关代码。更新到最新版本即可解决此问题。
参考文献包括Gitee平台的项目链接和白帽汇的原创文章,文章强调了信息安全领域的工作,如网络空间测绘、资产收集、源码 生成uml威胁情报和应急响应服务。白帽汇提供包括FOFA、FOEYE和NOSEC在内的安全工具和平台。
手把手教你将小程序项目跑起来真自律小程序
在猫宁一公众号中回复源码,获得下载链接,下载并解压小程序项目文件。
打开项目文件,编辑server/config.js文件,将红框标注处替换为您的信息。
查找qcloudAppId、qcloudSecretId、qcloudSecretKey,请登录腾讯云,点击链接:/capi,获取AppID、SecretId、SecretKey。
登录微信公众平台(mp.weixin.qq.com/),进入开发设置,找到appId、appSecret信息。
如无小程序账号,请点击注册链接并下载开发者工具。搭建前端开发环境,导入项目至微信开发者工具,完成前端环境搭建。
搭建本地后端开发环境,作为后端服务器。在MySQL数据库中创建数据表,粘贴语句创建opinions和records数据表。
启动项目前,请打开终端,安装SDK和sass插件。SDK用于获取微信用户身份的唯一标识(openId),sass插件支持scss语言运行,确保无安装错误。
运行npm run dev在项目目录启动前端代码,在server目录下启动后端代码。在微信开发者工具中查看项目效果。
项目开发全程由猫宁一全栈程序媛全程指导,更多全栈项目代码与课程目录请关注猫宁一公众号并回复源码获取。