認證和權限

生成用戶令牌(token)

  • 哈希碼 - MD5/SHA1

  • UUID - 全局唯一標識符

  • JWT - Json Web Token - djangorestframework-jwt

  • 防跨站身份僞造 - CSRF / XSRF

  • 防表單重複提交

XSS - 跨站腳本攻擊 - 消毒
hack.js ---> hack.jpg ---> <img src="hack.jpg">
nosniff

&lt;script&gt;
    (funciton(){})()
&lt;/script&gt;
  • SQL注射攻擊
    不允許帶單引號拼接SQL語句
    "select * from tb_user where username='%s' and password='%s'" % (uid, pwd)

uid = "jackfrued"
pwd = " ' or '1'='1"

select * from tb_user where username='jackfrued' and password=' ' or '1'='1'

cursor.execute('...', (a, b, c))

  • 點擊劫持攻擊 - click-hacking - X_FRAME_OPTIONS = 'DENY'

Authentication - 認證 - 能否訪問資源
Authorization - 授權 - 能否對特定的資源進行特定的操作

密碼原文 ---> 加鹽 ---> 生成哈希摘要

SPA - 單頁應用 - Single Page Application
Vue.js / AngularJS

Web應用優化的兩大定律:

  1. 使用緩存 - 數據量不大 - 熱點數據 - 數據(值)不會頻繁修改
  2. 能推遲的事情都不馬上做 - 消息隊列 - 削峯 / 上下游節點解耦合

消息隊列使得任務可以異步化的處理
同步 - 阻塞
異步 - 非阻塞

Celery - 既可以充當消息的生產者也可以充當消息的消費者

定時任務 + 異步任務

要使用Celery需要爲其配置隊列服務 - RabbitMQ / Redis

下訂單就是一個可以推遲執行的任務 不需要馬上返回訂單受理的結果 而且下訂單的系統和受理訂單的系統可以是兩套程序(消息的生產者和消息的消費者) 分別運轉在不同的服務器上

項目中可能會遇到執行時間無法預期的任務(比如調用三方平臺)和不需要馬上給出執行結果的任務,這兩種任務都應該放到消息隊列中,受理用戶請求的程序作爲消息的生產者將用戶請求放入消息隊列,稍後由消息的消費者會從消息隊列中取出任務進行處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章