【python】django實現掃碼簽到

功能分析
基礎學習
實現思路
動手
前端

功能分析


核心需求

  • 能統計到場人員狀況
    • 在現場的人能夠證實本身在現場
    • 不在現場的人不能證實本身在現場
    • 系統可以辨別和記錄收到的證實
    • 系統能保存和顯示統計狀況

一個基本的掃碼簽到系統:python

  • 訪問指定URL能出來二維碼
    • 管理員登錄後才能訪問URL
    • 後端產生二維碼
    • 二維碼發送到前端
    • 二維碼在前端顯示出來
    • 二維碼能定時更新
  • 掃碼以後能執行一些操做
    • 用戶設備掃碼後能發出數據包
      • 構造可以獨特標識用戶身份的數據包
      • 數據包可以自證來源合法
    • 後端能接收、處理收到的數據包
      • 驗證數據包來源合法性,時效性
      • 提取用戶信息
      • 增刪數據庫內容,更新簽到狀況
      • 給用戶的掃碼設備反饋
      • 給二維碼頁面反饋

一個實用的掃碼簽到系統:ajax

  • 安全性
    • 不可僞造
      • 二維碼頁面的訪問控制
      • 二維碼的時效性
      • 數據包的用戶身份標識
    • 難以攻擊
      • 數據包清洗
        • 來自二維碼頁面的數據包
        • 掃碼產生的數據包
      • 惡意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,即<img src="data:img/png;base64,{{data}}">
    • 二維碼能定時更新
      想過用ajax,但不懂的東西有點多,就先用<meta http-equiv="refresh" content="15">替代了

to be continued...數據庫


  • 掃碼以後能執行一些操做
    • 用戶設備掃碼後能發出數據包
      • 構造可以獨特標識用戶身份的數據包
      • 數據包可以自證來源合法
    • 後端能接收、處理收到的數據包
      • 驗證數據包來源合法性,時效性
      • 提取用戶信息
      • 增刪數據庫內容,更新簽到狀況
      • 給用戶的掃碼設備反饋
      • 給二維碼頁面反饋

一個實用的掃碼簽到系統:django

  • 安全性
    • 不可僞造
      • 二維碼頁面的訪問控制
      • 數據包的用戶身份標識
    • 難以攻擊
      • 數據包清洗
        • 來自二維碼頁面的數據包
        • 掃碼產生的數據包
      • 惡意IP管理
  • 魯棒性
    • 同一管理員多個會話
    • 多個管理員多個會話
    • 面對大規模請求不丟包
  • 用戶體驗
    • 二維碼、簽到頁面好好看、有趣、多變
    • 掃碼後的反饋頁面好看、有趣、多變
    • 掃碼後的反饋頁面響應快
    • 簽到頁面顯示已籤人數等
    • 二維碼附近顯示頁面更新倒計時
    • 簽到後可發彈幕,可能引入更多安全性問題

      動手

相關文章
相關標籤/搜索