• 【python】django实现扫码签到


    功能分析
    基础学习
    实现思路
    动手

    功能分析

    核心需求 * 能统计到场人员情况 * 在现场的人可以证明自己在现场 * 不在现场的人不能证明自己在现场 * 系统能够辨别和记录收到的证明 * 系统能保存和显示统计情况

    一个基本的扫码签到系统:

    • 访问指定URL能出来二维码

      • 管理员登陆后才能访问URL
      • 后端产生二维码
      • 二维码发送到前端
      • 二维码在前端显示出来
      • 二维码能定时更新
    • 扫码之后能执行一些操作

      • 用户设备扫码后能发出数据包
        • 构造能够独特标识用户身份的数据包
        • 数据包能够自证来源合法
      • 后端能接收、处理收到的数据包
        • 验证数据包来源合法性,时效性
        • 提取用户信息
        • 增删数据库内容,更新签到情况
        • 给用户的扫码设备反馈
        • 给二维码页面反馈

    一个实用的扫码签到系统:

    • 安全性
      • 不可伪造
        • 二维码页面的访问控制
        • 二维码的时效性
        • 数据包的用户身份标识
      • 难以攻击
        • 数据包清洗
          • 来自二维码页面的数据包
          • 扫码产生的数据包
        • 恶意IP管理
    • 鲁棒性
      • 同一管理员多个会话
      • 多个管理员多个会话
      • 面对大规模请求不丢包
    • 用户体验
      • 二维码、签到页面好看、有趣、多变
      • 扫码后的反馈页面好看、有趣、多变
      • 扫码后的反馈页面响应快
      • 签到页面显示已签人数等
      • 二维码附近显示页面更新倒计时
      • 签到后可发弹幕,但可能引入更多安全性问题

    基础学习

    * python基本语法 * qrcode包的使用 * django工作流程,工程和app的目录结构 * django前后端数据如何传输 * django的基本命令和HttpResponse的构造 * django模板语言的语法 * django模板的编写和调用 * django中的访问控制和数据库操作

    实现思路

    一个基本的扫码签到系统: * 访问指定URL能出来二维码 * 管理员登陆后才能访问URL 带cookie访问,未登录则重定向到登录界面 * 二维码的产生,传送和显示 用qrcode产生指定内容的二维码。一种思路是后端把图片写到文件里,前端去读取。优点是思路清晰,操作方式经典,看上去好实现;缺点是页面更新较快,频繁读写不优雅,并且因为对static文件比较懵逼导致在本地调试时图片路径搞不清楚,页面总是显不出图。另一种思路是不读写文件,而是把二维码以某种数据结构直接传给前端。优点是不读写磁盘,满足了有点强迫症的心理,缺点是不知道怎么搞。然后想到ctf里把图片按base64编码的小trick,再加上这些二维码数据量都不大,于是决定就这么干。测试后发现`img=qrcode.make(token);buf=StringIO();img.save(buf);imgdata=bug.getvalue();`后这个imgdata就是个字符串,那就`data=base64.b64encode(imgdata);`一下,用`render()`传给前端的img作src,即``。 * 二维码能定时更新 想过用ajax,但不懂的东西有点多,就先用``替代了

    to be continued...


    • 扫码之后能执行一些操作
      • 用户设备扫码后能发出数据包
        • 构造能够独特标识用户身份的数据包
        • 数据包能够自证来源合法
      • 后端能接收、处理收到的数据包
        • 验证数据包来源合法性,时效性
        • 提取用户信息
        • 增删数据库内容,更新签到情况
        • 给用户的扫码设备反馈
        • 给二维码页面反馈

    一个实用的扫码签到系统:

    • 安全性
      • 不可伪造
        • 二维码页面的访问控制
        • 数据包的用户身份标识
      • 难以攻击
        • 数据包清洗
          • 来自二维码页面的数据包
          • 扫码产生的数据包
        • 恶意IP管理
    • 鲁棒性
      • 同一管理员多个会话
      • 多个管理员多个会话
      • 面对大规模请求不丢包
    • 用户体验
      • 二维码、签到页面好好看、有趣、多变
      • 扫码后的反馈页面好看、有趣、多变
      • 扫码后的反馈页面响应快
      • 签到页面显示已签人数等
      • 二维码附近显示页面更新倒计时
      • 签到后可发弹幕,可能引入更多安全性问题

    动手

  • 相关阅读:
    Linux下目录的权限详解
    Linux下mknod详解
    迅雷精简版-无广告
    PotPlayer一款简洁好用的播放器
    Linux 信号signal处理机制
    Kruskal算法求最小生成树
    Prim算法求权数和,POJ(1258)
    Prim算法求最大权,POJ(2485)
    Prim算法
    DP找最优配置,(POJ1018)
  • 原文地址:https://www.cnblogs.com/findneo/p/7029307.html
Copyright © 2020-2023  润新知