第9章 py web框架考察点

py WSGI与web框架常考点

考点聚焦

  • WSGI, 常见Web框架
  • 常用的py web框架Django/Flask/Tornado对比
  • Web框架的组成(淡化框架,加强基础)

什么是WSGI?

  • Python Web Server Gateway Interface(PEP 333)
  • 解决Python Web Server乱象mod_python, CGI, FastCGI等
  • 描述Web Server(Gunicorn/uWSGI)如何与web框架交互, Web框架如何处理请求
def application(environ, start_response)

* application 是WSGI app, 一个可调用对象
*参数
   *environ: 一个包含WSGI环境信息的字典,由WSGI服务器提供,常见的key有PATH_INFO, QUERY_STRING等
   *start_response: 生成WSGI响应的回调函数,接收两个参数,status 和 headers
*函数返回响应体的迭代器
def myapp(environ, start_response):
   status = '200 OK'
   headers = [('Content-Type', 'text/html; charset=utf8')]

   start_response(status, headers)
   return [b'<h1>Hello World</hl>']    #可迭代对象,返回字节

if __name__ == '__main__':
   from wsgiref.simple_server import make_server
   httpd = make_server('127.0.0.1', 8888, myapp)
#一个简单的兼容WSGI的web应用
#导入py内置的WSGI server
from wsgiref.simple_server import make_server

def applicaiton(environ, start_response):
    status = '200 OK'
    headers =
    [
        ('Content-Type', 'text/html; charset=utf8')
    ]
    start_response(status, headers)
    return [b"<h1>Hello, World!</h1>"]

if __name__ == '__main__':
    httpd = make_server('127.0.0.1', 8000, application)
    httpd.serve_forever() 

常用的py web框架对比

? Django vs Flask vs Tornado

? Django: 大而全,内置ORM, Admin等组件,第三方插件较多

? Flask:微框架,插件机制,比较灵活

? Tornado: 异步支持的微框架和异步网络库

什么是MVC?

? MVC: 模型(model) 视图(View) 控制器(Controller)

? Model: 负责业务对象和数据库的交互(ORM)

? View:负责与用户的交互展示

? Controller: 接收请求参数调用模型和视图完成请求

什么是ORM?

? Object Relational Mapping, 对象关系映射

? 用于实现业务对象和数据表中的字段映射

  • Sqlalchemy Django ORM Peewee

    优势: 代码更加面向对象,代码量更少,灵活性高, 提升开发效率

Web安全常考点

常见的web安全问题,原理和防范措施,安全意识

  • SQL注入
  • XSS(跨站脚本攻击, Cross-Site Scripting)
  • CSRF(跨站请求伪造,Cross-site request forgery)

什么是SQL注入?

SQL注入与防范

  • 通过构造特殊的输入参数传入Web应用, 导致后端执行恶意SQL
  • 未对输入进行过滤,直接动态拼接SQL产生
  • 可以使用开源工具sqlmap, SQLninja检测

如何防范SQL注入?

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

什么是XSS?

XSS(Cross Site Scripting) 跨站脚本攻击

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

前后端分离与RESTful常见面试题

考点聚焦

  • 什么是前后端分离? 什么是RESTful?
  • 前后端分离的意义和方式
  • 什么是RESTful
  • 如何设计RESTful API

什么是前后端分离? 什么是RESTful?

  • 后端只负责提供数据接口,不再渲染模板,前端获取数据并呈现
  • 前后端解耦, 接口复用(前端和客户端公用端口) 减少开发量
  • 前后端同步开发,提升工作效率,定义好接口规范
  • 更有利于调试(mock) 测试和运维部署

什么是RESTful

Representational State Transfer

  • 表现层状态转移,由HTTP协议的主要设计者Roy Fielding提出
  • 资源(Resources) 表现层(Representation) 状态转化(State Transfer)
  • 是一种以资源为中心的web软件架构风格,可以用Ajax和RESTful web服务构建应用

三个名词的解释:

  • Resources(资源): 使用URI指向的一个实体
  • Representation(表现层):资源的表现形式,eg: 图片, HTML文本等
  • State Transfer(状态转化):GET,POST PUT DELETE HTTP动词来操作资源

? 实现资源状态的改变

RESTful的准则

设计概念和准则

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

什么是RESTful API?

RESTful风格的API接口

  • 通过HTTP GET/POST/PUT/DELETE 获取/新建/更新/删除 资源
  • 把HTTP动词语义和数据库的增删改查结合到一起
  • 一般使用JSON格式返回数据
  • 一般web框架都有相应的插件支持RESTful API

如何设计RESTful API?

HTTP方法 URL 动作
GET http://[hostname]/api/users 检索用户列表
GET http://[hostname]/api/users/[user_id] 检索单个用户
POST http://[hostname]/api/users 创建新用户
PUT http://[hostname]/api/users/[user_id] 更新用户信息
DELETE http://[hostname]/api/users/[user_id] 删除用户

web框架和web安全思考题

? 什么是HTTPS?

? HTTP和HTTPS的区别?

? 什么是对称加密和非对称加密?

? HTTPS的通信过程是什么样的?能否用Wireshark抓包观察?

原文地址:https://www.cnblogs.com/xuzhaoping/p/11619253.html

时间: 2024-08-12 15:39:50

第9章 py web框架考察点的相关文章

Django web框架 下载安装 简单项目搭建

什么是web应用? Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 应用程序有两种模式C/S.B/S.C/S是客户端/服务器端程序,也就是说这类程序一般独立运行.而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行.WEB应用程序一般是B/S模式.Web应用程序首先是“应用程序”,和用标准的程序语言,如C.C++等编写出来的程序没有什么本质上的不同.然而Web应用程序又有自己独特的地

web.py 学习(-)Rocket web框架

Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: method - A string value indicating the type of Worker to use to answer the requests received by Rocket. The default is wsgi and will invoke the WSGIWorker

《白帽子讲WEB安全》学习笔记之第12章 WEB框架安全

第12章 WEB框架安全 12.1 MVC框架安全 在Spring框架中可以使用spring security来增加系统的安全性. 12.2 模板引擎与XSS防御 12.3 WEB框架与CSRF防御 在MVC中防御CSRF: q  在Session中绑定token.如果不能保存到数据库中的Session,则使用Cookie. q  在form表单中自动填写token字段 q  在Ajax请求中封装token. q  在服务器端对比POST提交的token与Session绑定的Tiken是否一致.

第三章 Web框架 Nancy

如果使用Nancy作为一个WEB框架而言,会有什么不同?实际上很多. 在使用Nancy框架为网页添加Rest节点和路由和之前的Rest框架中是相同的,这方面没有什么需要学习的了.Nancy采用一贯的处理方式, 通过一些模块化的组件进行扩充功能,使得更加适合开发一个完整的WEB站点. Nancy非常适合提供基于自定义路由的静态文件和基于数据的视图(就像ASP.NET MVC),事实上,你甚至可以去定义一个引用的别名或路由来指向已经存在的特定静态文件,而不是动态生成一个. 请参见以下示例. 想象在N

Python web 框架:web.py

web.py 是一个Python 的web 框架,它简单而且功能强大.web.py 是公开的,无论用于什么用途都是没有限 制的. web.py 安装: pip install web.py 下面开始我们第一个实例hello.py: # _*_ coding:utf-8 _*_ import web urls = ("/.*", "hello") # 指定任何url都指向hello类 app = web.application(urls, globals()) # 绑

简单而直接的Python web 框架:web.py

From:https://www.oschina.net/question/5189_4306 Web.py github 地址:https://github.com/webpy/webpy        https://pypi.python.org/pypi/web.py Web.py Cookbook 简体中文版:http://webpy.org/cookbook/index.zh-cn web.py 0.3 新手指南:http://webpy.org/docs/0.3/tutorial.

一 什么是web框架?

Django-1 一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200

Python全栈开发-web框架之django

一:web框架 什么是web框架? Web应用框架(Web application framework)是一种开发框架,用来支持动态网站.网络应用程序及网络服务的开发.这种框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口.标准样板以及会话管理等,可提升代码的可再用性. web应用的流程: //浏览器发送一个HTTP请求: //服务器收到请求,生成一个HTML文档: //服务器把HTML文档作为HTTP响应的Body发送给浏览器: //浏览器收到HTTP响应,从HTTP

Python web框架Django(一)

? 第一章:介绍Django 本书所讲的是Django:一个可以使Web开发工作愉快并且高效的Web开发框架. 使用Django,使你能够以最小的代价构建和维护高质量的Web应用. 从好的方面来看,Web 开发激动人心且富于创造性:从另一面来看,它却是份繁琐而令人生厌的工作. 通过减少重复的代码,Django 使你能够专注于 Web 应用上有 趣的关键性的东西. 为了达到这个目标,Django 提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为"如何解决问题&qu