小程序安全检测发现 session_key 泄露漏洞,开发者如何防御?

2024-06-16
来源:网络整理

为了进一步提升小程序的安全性和用户体验,平台目前要求对所有提交审核的小程序进行安全测试。在测试过程中发现不少小程序还存在安全漏洞,包括泄漏漏洞。希望通过以下相关漏洞介绍、案例分析、修复建议,让开发者更好地了解如何防御此类漏洞。

1. 漏洞介绍

为了保证数据安全,微信会对用户数据进行加密传输,因此小程序在获取微信提供的用户数据(如手机号)时,需要进行相应的解密,具体流程请参见开放数据验证与解密开发文档。

指会话密钥,可以简单理解为微信开放数据AES加密的密钥,是微信服务器向开发者服务器颁发的身份证书,正常情况下,此数据无论如何都不能泄露。如果小程序存在泄露漏洞,则意味着微信传输的用户数据存在被泄露或篡改的风险,开发者应及时发现漏洞,并迅速修复相应问题。

2. 漏洞案例

某小程序因存在漏洞,可使用任意手机号登录,存在巨大安全风险。

我们可以清楚的看到以下请求已经被泄露:

通过获得这个,我们可以结合iv来解密密文:

下面的脚本就是解密所需要的全部内容,因此攻击者也可以使用同样的信息来篡改用户数据,然后加密后返回给服务器,从而达到使用任意手机号登录的目的。

3. 错误修复

通过以上案例,我们了解到了泄密会给小程序带来的危害。泄密的原因可能无非有以下两种:

1、通过接口获取用户时,返回给小程序的数据中含有字段,以泄露的URL:/api/.php?code=xxxx为例,具体表现如下图所示:

查看后端.php源码发现$变量里面包含字段,开发者需要将变量里面的字段去掉,如果需要获取,只需要提取字段返回给小程序即可。

2、解密开放数据时,使用了错误的方法。以手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV)后,将服务器中的数据传输到小程序前端,在前端直接解密:

这种方式是绝对不可接受的,正确的流程应该是将加密数据(及IV)传输到服务器,结合服务器解密获取手机号,再返回给小程序。另外,平台目前已升级手机号获取接口,建议开发者使用新版本,增强小程序安全性。

若小程序存在相应泄漏漏洞,请尽快检查并修复漏洞:

请尽快将网络请求中的请求与响应中的字段及其对应值移除,后续不要再传输到小程序客户端等服务端以外的环境,以消除风险。

其他常见问题

Q1:如何进行相应的修复?是不是只需要修改字段名称就可以了?

A1:不可以,修改字段名并不能从根本上消除风险,该字段及其对应的值不应该传输到服务器之外的环境,例如小程序客户端,必须删除请求和响应中所有相关信息,才能修复漏洞。

Q2:解密开放数据的正确方法是什么?

A2:以获取手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV),将加密数据传输到服务器后结合服务器解密获取手机号,再返回给小程序,而不是将服务器数据传输到小程序前端,在前端直接解密。

相关文章

安全等级 | 关于小程序密钥泄露漏洞 安全等级 | 关于小程序云端AK/SK泄露漏洞

若您还有其他相关问题,欢迎随时参与官方社区讨论。

为了进一步提升小程序的安全性和用户体验,平台目前要求对所有提交审核的小程序进行安全测试。在测试过程中发现不少小程序还存在安全漏洞,包括泄漏漏洞。希望通过以下相关漏洞介绍、案例分析、修复建议,让开发者更好地了解如何防御此类漏洞。

1. 漏洞介绍

为了保证数据安全,微信会对用户数据进行加密传输,因此小程序在获取微信提供的用户数据(如手机号)时,需要进行相应的解密,这会涉及到,具体流程请参考开放数据验证与解密开发文档。

指会话密钥,可以简单理解为微信开放数据AES加密的密钥,是微信服务器向开发者服务器颁发的身份证书,正常情况下,此数据无论如何都不能泄露。如果小程序存在泄露漏洞,则意味着微信传输的用户数据存在被泄露或篡改的风险,开发者应及时发现漏洞,并迅速修复相应问题。

2. 漏洞案例

某小程序因存在漏洞,可使用任意手机号登录,存在巨大安全风险。

我们可以清楚的看到以下请求已经被泄露:

通过获得这个,我们可以结合iv来解密密文:

下面的脚本就是解密所需要的全部内容,因此攻击者也可以使用同样的信息来篡改用户数据,然后加密后返回给服务器,从而达到使用任意手机号登录的目的。

3. 错误修复

通过以上案例,我们了解到了泄密会给小程序带来的危害。泄密的原因可能无非有以下两种:

1、通过接口获取用户时,返回给小程序的数据中含有字段,以泄露的URL:/api/.php?code=xxxx为例,具体表现如下图所示:

查看后端.php源码发现$变量里面包含字段,开发者需要将变量里面的字段去掉,如果需要获取,只需要提取字段返回给小程序即可。

2、解密开放数据时,使用了错误的方法。以手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV)后,将服务器中的数据传输到小程序前端,在前端直接解密:

这种方式是绝对不可接受的,正确的流程应该是将加密数据(及IV)传输到服务器,结合服务器解密获取手机号,再返回给小程序。另外,平台目前已升级手机号获取接口,建议开发者使用新版本,增强小程序安全性。

若小程序存在相应泄漏漏洞,请尽快检查并修复漏洞:

请尽快将网络请求中的请求与响应中的字段及其对应值移除,后续不要再传输到小程序客户端等服务端以外的环境,以消除风险。

其他常见问题

Q1:如何进行相应的修复?是不是只需要修改字段名称就可以了?

A1:不可以,修改字段名并不能从根本上消除风险,该字段及其对应值不应该传输到服务器之外的环境,例如小程序客户端,必须删除请求和响应中所有相关信息,才能修复漏洞。

Q2:解密开放数据的正确方法是什么?

A2:以获取手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV),将加密数据传输到服务器后结合服务器解密获取手机号,再返回给小程序,而不是将服务器数据传输到小程序前端,在前端直接解密。

相关文章

安全等级 | 关于小程序密钥泄露漏洞 安全等级 | 关于小程序云端AK/SK泄露漏洞

若您还有其他相关问题,欢迎随时参与官方社区讨论。

为了进一步提升小程序的安全性和用户体验,平台目前要求对所有提交审核的小程序进行安全测试。在测试过程中发现不少小程序还存在安全漏洞,包括泄漏漏洞。希望通过以下相关漏洞介绍、案例分析、修复建议,让开发者更好地了解如何防御此类漏洞。

1. 漏洞介绍

为了保证数据安全,微信会对用户数据进行加密传输,因此小程序在获取微信提供的用户数据(如手机号)时,需要进行相应的解密,这会涉及到,具体流程请参考开放数据验证与解密开发文档。

指会话密钥,可以简单理解为微信开放数据AES加密的密钥,是微信服务器向开发者服务器颁发的身份凭证,正常情况下,此数据无论如何都无法泄露。如果小程序存在泄露漏洞,则意味着微信传输的用户数据存在被泄露或篡改的风险,开发者应及时发现漏洞,并迅速修复相应问题。

2. 漏洞案例

某小程序因存在漏洞,可使用任意手机号登录,存在巨大安全风险。

我们可以清楚的看到以下请求已经被泄露:

通过获得这个,我们可以结合iv来解密密文:

下面的脚本就是解密所需要的全部内容,因此攻击者也可以使用同样的信息来篡改用户数据,然后加密后返回给服务器,从而达到使用任意手机号登录的目的。

3. 错误修复

通过以上案例,我们了解到了泄密会给小程序带来的危害。泄密的原因可能无非有以下两种:

1、通过接口获取用户时,返回给小程序的数据中含有字段,以泄露的URL:/api/.php?code=xxxx为例,具体表现如下图所示:

程序的开发_常见开发程序问题小结_小程序开发的常见问题

查看后端.php源码发现$变量里面包含字段,开发者需要将变量里面的字段去掉,如果需要获取,只需要提取字段返回给小程序即可。

2、解密开放数据时,使用了错误的方法。以手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV)后,将服务器中的数据传输到小程序前端,在前端直接解密:

这种方式是绝对不可接受的,正确的流程应该是将加密数据(及IV)传输到服务器,结合服务器解密获取手机号,再返回给小程序。另外,平台目前已升级手机号获取接口,建议开发者使用新版本,增强小程序安全性。

若小程序存在相应泄漏漏洞,请尽快检查并修复漏洞:

请尽快将网络请求中的请求与响应中的字段及其对应值移除,后续不要再传输到小程序客户端等服务端以外的环境,以消除风险。

其他常见问题

Q1:如何进行相应的修复?是不是只需要修改字段名称就可以了?

A1:不可以,修改字段名并不能从根本上消除风险,该字段及其对应的值不应该传输到服务器之外的环境,例如小程序客户端,必须删除请求和响应中所有相关信息,才能修复漏洞。

Q2:解密开放数据的正确方法是什么?

A2:以获取手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV),将加密数据传输到服务器后结合服务器解密获取手机号,再返回给小程序,而不是将服务器数据传输到小程序前端,在前端直接解密。

相关文章

安全等级 | 关于小程序密钥泄露漏洞 安全等级 | 关于小程序云端AK/SK泄露漏洞

若您还有其他相关问题,欢迎随时参与官方社区讨论。

为了进一步提升小程序的安全性和用户体验,平台目前要求对所有提交审核的小程序进行安全测试。在测试过程中发现不少小程序还存在安全漏洞,包括泄漏漏洞。希望通过以下相关漏洞介绍、案例分析、修复建议,让开发者更好地了解如何防御此类漏洞。

1. 漏洞介绍

为了保证数据安全,微信会对用户数据进行加密传输,因此小程序在获取微信提供的用户数据(如手机号)时,需要进行相应的解密,具体流程请参见开放数据验证与解密开发文档。

指会话密钥,可以简单理解为微信开放数据AES加密的密钥,是微信服务器向开发者服务器颁发的身份证书,正常情况下,此数据无论如何都不能泄露。如果小程序存在泄露漏洞,则意味着微信传输的用户数据存在被泄露或篡改的风险,开发者应及时发现漏洞,并迅速修复相应问题。

2. 漏洞案例

某小程序因存在漏洞,可使用任意手机号登录,存在巨大安全风险。

我们可以清楚的看到以下请求已经被泄露:

通过获得这个,我们可以结合iv来解密密文:

下面的脚本就是解密所需要的全部内容,因此攻击者也可以使用同样的信息来篡改用户数据,然后加密后返回给服务器,从而达到使用任意手机号登录的目的。

3. 错误修复

通过以上案例,我们了解到了泄密会给小程序带来的危害。泄密的原因可能无非有以下两种:

1、通过接口获取用户时,返回给小程序的数据中含有字段,以泄露的URL:/api/.php?code=xxxx为例,具体表现如下图所示:

查看后端.php源码发现$变量里面有字段,开发者需要把变量里面的字段去掉,如果需要获取的话,只需要提取字段返回给小程序即可。

2、解密开放数据时,使用了错误的方法。以手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV)后,将服务器中的数据传输到小程序前端,在前端直接解密:

这种方式是绝对不可接受的,正确的流程应该是将加密数据(及IV)传输到服务器,结合服务器解密获取手机号,再返回给小程序。另外,平台目前已升级手机号获取接口,建议开发者使用新版本,增强小程序安全性。

若小程序存在相应泄漏漏洞,请尽快检查并修复漏洞:

请尽快将网络请求中的请求与响应中的字段及其对应值移除,后续不要再传输到小程序客户端等服务端以外的环境,以消除风险。

其他常见问题

Q1:如何进行相应的修复?是不是只需要修改字段名称就可以了?

A1:不可以,修改字段名并不能从根本上消除风险,该字段及其对应值不应该传输到服务器之外的环境,例如小程序客户端,必须删除请求和响应中所有相关信息,才能修复漏洞。

Q2:解密开放数据的正确方法是什么?

A2:以获取手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV),将加密数据传输到服务器后结合服务器解密获取手机号,再返回给小程序,而不是将服务器数据传输到小程序前端,在前端直接解密。

相关文章

安全等级 | 关于小程序密钥泄露漏洞 安全等级 | 关于小程序云端AK/SK泄露漏洞

若您还有其他相关问题,欢迎随时参与官方社区讨论。

为了进一步提升小程序的安全性和用户体验,平台目前要求对所有提交审核的小程序进行安全测试。在测试过程中发现不少小程序还存在安全漏洞,包括泄漏漏洞。希望通过以下相关漏洞介绍、案例分析、修复建议,让开发者更好地了解如何防御此类漏洞。

1. 漏洞介绍

为了保证数据安全,微信会对用户数据进行加密传输,因此小程序在获取微信提供的用户数据(如手机号)时,需要进行相应的解密,具体流程请参见开放数据验证与解密开发文档。

指会话密钥,可以简单理解为微信开放数据AES加密的密钥,是微信服务器向开发者服务器颁发的身份证书,正常情况下,此数据无论如何都不能泄露。如果小程序存在泄露漏洞,则意味着微信传输的用户数据存在被泄露或篡改的风险,开发者应及时发现漏洞,并迅速修复相应问题。

2. 漏洞案例

某小程序因存在漏洞,可使用任意手机号登录,存在巨大安全风险。

我们可以清楚的看到以下请求已经被泄露:

通过获得这个,我们可以结合iv来解密密文:

下面的脚本就是解密所需要的全部内容,因此攻击者也可以使用同样的信息来篡改用户数据,然后加密后返回给服务器,从而达到使用任意手机号登录的目的。

3. 错误修复

通过以上案例,我们了解到了泄密会给小程序带来的危害。泄密的原因可能无非有以下两种:

1、通过接口获取用户时,返回给小程序的数据中含有字段,以泄露的URL:/api/.php?code=xxxx为例,具体表现如下图所示:

查看后端.php源码发现$变量里面包含字段,开发者需要将变量里面的字段去掉,如果需要获取,只需要将字段提取出来返回给小程序即可。

2、解密开放数据时,使用了错误的方法。以手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV)后,将服务器中的数据传输到小程序前端,在前端直接解密:

这种方式是绝对不可接受的,正确的流程应该是将加密数据(及IV)传输到服务器,结合服务器解密获取手机号,再返回给小程序。另外,平台目前已升级手机号获取接口,建议开发者使用新版本,增强小程序安全性。

若小程序存在相应泄漏漏洞,请尽快检查并修复漏洞:

请尽快将网络请求中的请求与响应中的字段及其对应值移除,后续不要再传输到小程序客户端等服务端以外的环境,以消除风险。

其他常见问题

Q1:如何进行相应的修复?是不是只需要修改字段名称就可以了?

A1:不可以,修改字段名并不能从根本上消除风险,该字段及其对应值不应该传输到服务器之外的环境,例如小程序客户端,必须删除请求和响应中所有相关信息,才能修复漏洞。

Q2:解密开放数据的正确方法是什么?

A2:以获取手机号接口为例,通过事件回调获取微信服务器返回的加密数据(及IV),将加密数据传输到服务器后结合服务器解密获取手机号,再返回给小程序,而不是将服务器数据传输到小程序前端,在前端直接解密。

相关文章

安全等级 | 关于小程序密钥泄露漏洞 安全等级 | 关于小程序云端AK/SK泄露漏洞

若您还有其他相关问题,欢迎随时参与官方社区讨论。

分享