美文网首页
python web 部分

python web 部分

作者: 希希里之海 | 来源:发表于2019-05-13 15:50 被阅读0次

python web 部分

WSGI

什么是 WSGI? 为什么需要它?

  • Python Web Server Gateway Interface(web 服务器网关接口)
  • 解决 Python Web Server 乱象 mod_python, CGI, FastCGI 等
  • 描述了 Web Server (Gunicorn/uWSGI)如何与 web 框架(Flask/Django)交互,Web 框架如何处理请求

举个很常见的例子

def application(environ, start_response)
  • application 就是 WSGI app,一个可调用对象
  • 参数:
  • environ:一个包含 WSGI 环境信息的字典,由 WSGI 服务器提供,常见的 key 有 PATH_INFO, QUERY_STRING 等
  • start_response:生成 WSGI 响应的回调函数,接受两个参数,status 和 headers
  • 函数返回响应体的迭代器

一个简单的兼容 WSGI 的 web 应用

# 导入 python 内置的 WSGI server
from wsgiref.simple_server import make_server

def application(environ, start_response):
    print(environ)  # 建议打出来这个字典看看有哪些参数
    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()

运行结果如下:

常用的 Python Web 框架对比

Django VS Flask Vs Tornado

  • Django:大而全,内置 ORM、Admin 等组件,第三方插件较多
  • Flask:微框架,插件机制,比较灵活(如 cookiecutter-flask 插件,可以生成统一的项目模版)
  • Tornado:异步支持的微框架和异步网络库
什么是 MVC

MVC:模型(Model),视图(View),控制器(Controller)

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

如图:


什么是 ORM

Object Relational Mapping,对象关系映射

  • 用于实现业务对象与数据表中的字段映射
  • 代码更加面向对象,代码量更少,灵活性高,提升开发效率

web 安全问题

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

  • SQL 注入
  • XSS(跨站脚本攻击,Cross-Site Scripting)
  • CSRF(跨站请求伪造,Cross-Site Request Forgery)
什么是 SQL 注入
  • 通过构造特殊的输入参数传入 Web 应用,导致后端执行了恶意 SQL
  • 通常由于程序员未对输入进行过滤,直接动态拼接 SQL 产生
  • 可以使用 开源工具 sqlmap,SQLninja 检测
如何防范 SQL 注入

web 安全一大原则:永远不要相信用户的任何输入

  • 对输入参数做好检查(类型和范围);过滤和转义字符
  • 不要直接拼接 sql,使用 ORM 可以大大降低 sql 注入风险
  • 数据库层:做好权限管理配置;不要明文存储敏感信息
什么是 XSS

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

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

CSRF(跨站请求伪造,Cross-Site Request Forgery)

相关文章

网友评论

      本文标题:python web 部分

      本文链接:https://www.haomeiwen.com/subject/ptxraqtx.html