web框架

python wsgi 和web框架

什么是WSGI?

  • web server 与 web框架交互的规范
  • 目的是解决:python web server的乱象

django vs Flask vs Tornado

  • django : 大而全,内置ORM,Admin等插件,第三方插件丰富
  • flask 微框架,插件机制,比较灵活 cookiecutter-flask 生成统一模板
  • Tornado 异步支持的微框架和异步网络库(轮子少)

什么是mvc模式

  • Model 负责业务对象和数据库之间的交互
  • View 负责与用户的交互展示
  • Controller 接收请求参数调用模型和视图完成请求

什么是ORM?

  • 对象关系映射
  • 用于实现业务对象与数据表中的字段映射
  • 常见的ORM :sqlalchemy django ORM Peewee
  • 优势:代码更加面向对象,代码量更少,灵活性高,提升开发效率

web安全

常见的安全问题

  • sql注入
  • XSS (跨站脚本攻击)
  • csrf(跨站请求伪造)

什么是sql注入

  • 通过构造特殊的输入参数传入web应用
  • 通常由于程序员未堆输入进行过滤,直接动态拼接sql导致的
  • 可以使用开源工具sqlmap SQLLninja 检测

如何防范?

  • web安全一大原则:永远不要相信用户的任何输入
  • 对输入参数做好检查(类型和范围) 过滤和转义特殊字符
  • 不要直接拼接sql,使用ORM可以大大降低sql注入风险
  • 数据库层: 做好权限管理配置,不要明文存储敏感信息

什么是XSS

  • 而已用户将代码植入到提供给其他用户使用的页面中,未经转义的而已代码输出到其他用户的浏览器执行
  • 用户浏览页面的时候嵌入页面中的脚本(js) 会执行,攻击用户
  • 主要分为两类:反射型(非持久型),存储型(持久型)

前后端分离

什么是前后端分离?

  • 后端负责提供数据接口,不再渲染模板,前端获取数据并呈现
  • 前后端解耦,接口复用(前端和客户端公用接口),减少开发量
  • 各司其职,前后端同步开发,提升工作效率,定义好接口规范
  • 更利调试(mock) ,测试和运维部署
  • 缺点:对于单页的应用不好做seo

什么是RESTFUL?

  • 表现层状态转移,由HTTP协议的主要设计者Roy Fielding 提出
  • 资源 表现层 状态转化
    • 资源: 使用URL 指向的一个实体
    • 表现层: 资源的表现形式,比如图片,html文本等
    • 状态转化:GET POST DELETE PUT http动词操作资源,实现资源状态的改变
  • 是一种以资源为中心的web软件架构风格,可以使用ajax 或restful web 构建应用

规范和准则

  • 所有事务抽象为资源,资源对应唯一
  • 资源通过接口操作实现状态转移,操作本身是无状态的
  • 对资源的操作不会改变资源标识

restful 风格API接口

  • 通过HTTP GET POST PUT DELETE 来增删改查资源
  • 一般使用json格式返回数据
  • 一般web框架都有响应的插件支持restful api

练习

什么是HTTP和HTTPS?

  • HTTPS 和HTTP 的区别
  • 你了解什么是对称加密和非对称加密
  • HTTP的通信过程是什么样的