认证和权限

生成用户令牌(token)

  • 哈希码 - MD5/SHA1

  • UUID - 全局唯一标识符

  • JWT - Json Web Token - djangorestframework-jwt

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

  • 防表单重复提交

XSS - 跨站脚本攻击 - 消毒
hack.js ---> hack.jpg --->
nosniff

<script>
    (funciton(){})()
</script>
  • 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

下订单就是一个可以推迟执行的任务 不需要马上返回订单受理的结果 而且下订单的系统和受理订单的系统可以是两套程序(消息的生产者和消息的消费者) 分别运转在不同的服务器上

项目中可能会遇到执行时间无法预期的任务(比如调用三方平台)和不需要马上给出执行结果的任务,这两种任务都应该放到消息队列中,受理用户请求的程序作为消息的生产者将用户请求放入消息队列,稍后由消息的消费者会从消息队列中取出任务进行处理

你可能感兴趣的:(认证和权限)