添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 虽然我们在前端界面做了60秒倒计时功能。
  • 但是恶意用户可以绕过前端界面向后端频繁请求短信验证码。

解决办法:

  • 在后端也要限制用户请求短信验证码的频率。60秒内只允许一次请求短信验证码。
  • 在Redis数据库中缓存一个数值,有效期设置为60秒。
避免频繁发送短信验证码逻辑分析
避免频繁发送短信验证码逻辑实现

提取、校验send_flag

send_flag = redis_conn.get('send_flag_%s' % mobile)
if send_flag:
    return http.JsonResponse({'code': RETCODE.THROTTLINGERR, 'errmsg': '发送短信过于频繁'})

重新写入send_flag

# 保存短信验证码
redis_conn.setex('sms_%s' % mobile, constants.SMS_CODE_REDIS_EXPIRES, sms_code)
# 重新写入send_flag
redis_conn.setex('send_flag_%s' % mobile, constants.SEND_SMS_CODE_INTERVAL, 1)

界面渲染频繁发送短信提示信息

if (response.data.code == '4001') {
    this.error_image_code_message = response.data.errmsg;
    this.error_image_code = true;
} else { // 4002
    this.error_sms_code_message = response.data.errmsg;
    this.error_sms_code = true;
                    存在的问题:虽然我们在前端界面做了60秒倒计时功能。但是恶意用户可以绕过前端界面向后端频繁请求短信验证码。解决办法:在后端也要限制用户请求短信验证码的频率。60秒内只允许一次请求短信验证码。在Redis数据库中缓存一个数值,有效期设置为60秒。避免频繁发送短信验证码逻辑分析避免频繁发送短信验证码逻辑实现提取、校验send_flagsend_flag = redis_conn.get('send_flag_%s' % mobile)if send_flag:    return
				
短信接口验证码是网站,App,微信端校验用户手机号码真实性的首要途径,在为用户提供便利的同时,手机短信验证功能也会被部分用户进行恶意使用。恶意频繁发送短信验证码,不仅会增加公司的运营成本,增加系统负载,也会给公司的形象造成极坏的影响(一般短信都会带公司的签名),所以必须要对这种行为进行防范,那么如何才能防止恶意频繁发送短信验证码?   一、易遭恶意使用的场景   网络在线投票站(需要填写手
var code = document.getElementById('code_send'); if (wait == 0) { code.removeAttribute("disabled"); code.innerHTML="获取...
在很多时候,我们都需要用到验证码,python的Pillow模块可以帮助我们绘制二维码,但是这种方法需要你事先了解Pillow模块,更方便的方法是直接使用django的第三方库 django-simple-captcha 模块。 安装该模块只需要: pip install django-simple-captcha captcha模块结合form表单使用非常方便,使用方法如下: forms...
文章目录1.添加redis配置2.自定义一个redis连接池3. 自定义装饰器,用来标注方法4. Jmeter测试    在很多场景下,会出现用户不小心点击过快的情况下,请求出现重复提交的问题,为了保证系统的数据一致性,可以对在一瞬间发起多次的请求进行拦截,并提示操作频繁,请稍后重试等。   实现原理   1) 对于使用session的系统,我们可以将用户信息存储到session里,并指定的name为student, key 的指定方式: user_id: view_obj.class:func.nam
好的,以下是用 Django 实现手机短信验证码的代码,供您参考: 1.首先在 settings.py 文件中配置短信服务商的 API_KEY、API_SECRET、签名等信息,例如: SMS_API_KEY = 'your sms api key' SMS_API_SECRET = 'your sms api secret' SMS_SIGN = 'your sms sign' 2.在 views.py 文件中定义生成验证码发送短信的函数,示例如下: import random import requests from django.http import JsonResponse # 生成指定长度的随机数字验证码 def generate_code(length=6): return ''.join([str(random.randint(0, 9)) for _ in range(length)]) # 发送短信验证码 def send_sms(phone, code): url = 'https://api.smsbao.com/sms' data = { 'u': SMS_API_KEY, 'p': SMS_API_SECRET, 'm': phone, 'c': f'【{SMS_SIGN}】您的验证码是{code}。如非本人操作,请忽略本短信。' response = requests.post(url, data=data) return response.text == '0' # 生成验证码发送短信 def generate_and_send_code(request): phone = request.GET.get('phone', '') if phone: code = generate_code() # 将验证码保存到 session 中 request.session['sms_code'] = code if send_sms(phone, code): # 短信发送成功 return JsonResponse({'status': 0, 'msg': '验证码发送成功'}) else: # 短信发送失败 return JsonResponse({'status': 1, 'msg': '验证码发送失败,请稍后再试'}) else: return JsonResponse({'status': 1, 'msg': '手机号不能为空'}) 3.在 urls.py 文件中配置对应的路由,例如: from django.urls import path from myapp.views import generate_and_send_code urlpatterns = [ path('sms/code/', generate_and_send_code), 上述代码中,访问 /sms/code/ 路由时会调用 generate_and_send_code 函数,生成随机验证码发送短信到指定手机号码。在发送短信时使用了短信服务商的 API 接口进行发送,可以根据实际情况更换为其他短信服务商的 API。同时,验证码也保存在 session 中,用于后续验证用户的输入是否正确。
Django账号登陆之判断用户是否登录(展示用户中心界面、`is_authenticate` 判断用户是否登录、 `login_required装饰器` 判断用户是否登录、登录时next参数的使用)