微信小程序-手机验证码短信登录接口(防薅方法)

前言

  • 开发的小程序手机号短信验证码登录这一个功能,入参只有手机号。

结局

  • 盗刷、 恶意刷。

解决方案

1. nginx

只允许referer是小程序来源的请求

# 你的接口
location ^~ /api/
{
   
    if ($http_referer !~* "^https://servicewechat.com/【你的小程序appid】/\d+/page-frame.html$") {
   
        return 444;
}

2. 利用小程序code来进行验证

  1. 利用小程序code,在后端静默获取openid,根据openid结合当前时间戳,生成加密串返回给后端。
  2. 前端请求短信接口时需要将openid和生成的加密串传给后端。
  3. 后端解析加密串后,判断解密后的openid是否一致、时间戳是否有效。

加密和解密过程都在后端进行,避免微信小程序被抓包反编译后能够找到加密方法。

伪代码实现逻辑

  • 前端
export default {
   
	mounted() {
   
		wx.login({
   
			success: function(res) {
   
				const {
   
					code
				} = res
				if (code) {
   
					// 后端code获取openid接口
					codeToOpenid({
   
						code
					}).then(data => {
   
						if (data) {
   
							const {
    openid, cryptoKey } = data
							that.openid = data.openid
							that.cryptoKey = data.cryptoKey
						}
					})
				} else {
   
					console.log('登录失败!' + res.errMsg)
				}
			}
		});
	},
	methods: {
   
		// 获取验证码
		getCode() {
   
				const checkPhone = /^1[3-9]\d{9}$/.test(this.phone)
				if (!checkPhone) {
   
					uni.showToast({
   
						icon: 'none',
						t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温温温B

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值