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的通信过程是什么样的