第9章 Python Web 框架考察点
Python WSGI与web框架常考点
WSGI 常见Web框架
◆什么是WSGI?
◆常用的 Python Web框架Dang/Fask/Tornado对比
◆web框架的组成(淡化框架,加强基础)
什么是WSGI?
什么是WSGI?为什么需要它?
经常使用uwsgi/gunicorn
部署 Django/Flask应用
为什么Flask/Django都可以运行在 gunicorn之上?
◆Python Web Server Gateway Interface(pep3333)
◆解决 Python Web Server乱象 mod_python, CGI, FastcGI等
◆描述了 Web Server(gunicorn/uWSGI)如何与web框架(Flask/Django)交互,Web框架如何处理请求
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164009252-1309230996.png)
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164012261-45937462.png)
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164014732-2065747312.png)
一个简单的兼容WSGI的web应用
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164015856-1427014573.png)
运行web应用
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164017062-1597279245.png)
常用的 Python Web框架对比
Django vs Flask vs Tornado
◆ Django:大而全,内置ORM、 Admin等组件,第三方插件较多
◆ Flask:微框架,插件机制,比较灵活
cookiecutter-flask
生成统一的项目模板
◆ Tornado:异步支持的微框架和异步网络库
什么是MVC?
MVC:模型(Model),视图(View),控制器(Controller)
解耦数据、展示和操作
◆ Model:负责业务对象和数据库的交互(ORM)
◆ VieW:负责与用户的交互展示
◆ Controller:接收请求参数调用模型和视图完成请求
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164018279-1903269249.png)
Object Relational Mapping,对象关系映射
◆用于实现业务对象与数据表中的字段映射
Sqlalchemy
Django ORM
Peewee
◆优势:代码更加面向对象,代码量更少,灵活性高,提升开发效率
Web安全常考点
常见的web安全问题,原理和防范措施。安全意识
◆SQ注入
◆XSS(跨站脚本攻击, Cross-Site Scripting)
◆CSRF(跨站请求伪造, Cross-site request forgery)
什么是SQL注入?
SQL注入与防范
◆通过构造特殊的输入参数传入Web应用,导致后端执行了恶意SQL
◆通常由于程序员未对输入进行过滤,直接动态拼接SQL产生
◆可以使用开源工具 sqlmap, SQLninja检测
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164020712-637912498.png)
拼接sql 导致
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164023390-2110315616.png)
解决办法
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164024791-775096023.png)
如何防范SQL注入?
Web安全一大原则:永远不要相信用户的任何输入
◆对输入参数做好检査(类型和范围);过滤和转义特殊字符
◆不要直接拼接sql,使用ORM可以大大降低sql注入风险
◆数据库层:做好权限管理配置;不要明文存储敏感信息
什么是XSS?
Xss( Cross Site Scripting),跨站脚本攻击
◆恶意用户将代码植入到提供给其他用户使用的页面中,未经转义的恶意代码输岀到其他用户的浏览器被执行
◆用户浏览页面的时候嵌入页面中的脚本(js)会被执行,攻击用户
◆主要分为两类:反射型(非持久型),存储型(持久型)
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164025541-930161612.png)
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164026292-735338049.png)
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164026987-1170718024.png)
XSS危害
XSS可以利用js实现很多危害巨大的操作
◆盗用用户 cookie,获取敏感信息
前后端分离与RESTful常见面试题
什么是前后端分离?什么是 RESTful
◆前后端分离的意义和方式
◆什么是 RESTfUl
◆如何设计 RESTful API
什么是前后端分离?有哪些优点?
后端只负责提供数据接口,不再渲染模板,前端获取数据并呈现
◆前后端解耦,接口复用(前端和客户端公用接口),减少开发量
◆各司其职,前后端同步开发,提升工作效率。定义好接口规范
◆更有利于调试(mock)、测试和运维部署
不好做SEO
什么是 RESTful
Representational State Transfer
◆表现层状态转移,由HTTP协议的主要设计者RoyFielding提出
◆资源( Resources),表现层( Representation),状态转化(State Transfer)
◆是一种以资源为中心的web软件架构风格,可以用Ajax和 RESTful web服务构建应用
RESTful解释
三个名词的解释
◆ Resources(资源):使用URI指向的一个实体
◆ Representation(表现层):资源的表现形式,比如图片、HTML文本等
◆ State Transfer(状态转化):GET、POST、PUT、 Delete Http 动词来操作资源,实现资源状态的改变
RESTful 的准则
设计概念和准则
◆所有事物抽象为资源(resource),资源对应唯一的标识(identifier)
◆资源通过接口进行操作实现状态转移,操作本身是无状态的
◆对资源的操作不会改变资源的标识
把HTTP动词语义和数据库的增删改查结合到一起
什么是 RESTful API
RESTful 风格的API接口
◆ 通过 Http GET/POST/PUT/DELETE 获取/新建/更新删除 资源
◆ 一般使用JSON格式返回数据
◆ 一般web框架都有相应的插件支持 RESTful API
如何设计 RESTful API?
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164028467-2133962766.png)
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164030768-1725998403.png)
![](https://img2020.cnblogs.com/blog/1165731/202102/1165731-20210210164032509-256088998.png)
Web框架和Web安全思考题
什么是 Https?
中高级考点:HTTP和Https的区别
◆Https和HTTP的区别是什么?
◆你了解什么是对称加密和非对称加密吗?
◆HTPS的通信过程是什么样的?你能否用 Wireshark抓包观察
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">