python项目与版本

1、一个请求过来到返回response的过程

客户端(浏览器)通过tcp传输,发送http请求给服务端;
服务端接收到http请求后进行解析;
服务端处理请求内容,组织响应内容;
服务端将响应内容以http响应格式发送给浏览器;
浏览器接收到响应内容,解析展示 。

2、实现单点登录

单点登录 SSO( Single Sign On )说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下两个:

  • 存储信任
  • 验证信任

如果一个系统做到了开头所讲的效果,也就算单点登录,单点登录有三种不同的实现方式,

a. 以Cookie作为凭证媒介

把信任存储在客户端的Cookie中,

第一,Cookie不安全,通过加密Cookie可以保证安全性,当然这是在源代码不泄露的前提下。如果Cookie的加密算法泄露,攻击者通过伪造Cookie则可以伪造特定用户身份,这是很危险的。

第二、不能跨域实现免登 。

b. 通过JSONP实现

这种方式虽然能解决跨域问题,但是安全性其实跟把信任存储到Cookie是差不多的。如果一旦加密算法泄露了,攻击者可以在本地建立一个实现了登录接口的假冒父应用,通过绑定Host来把子应用发起的请求指向本地的假冒父应用,并作出回应。 因为攻击者完全可以按照加密算法来伪造响应请求,子应用接收到这个响应之后一样可以通过验证,并且登录特定用户。

c. 通过页面重定向的方式

通过父应用和子应用来回重定向中进行通信,实现信息的安全传递。 父应用提供一个GET方式的登录接口,用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个的登录页面,用户输入账号密码进行登录。如果用户已经登录了,则生成加密的Token,并且重定向到子应用提供的验证Token的接口,通过解密和校验之后,子应用登录当前用户。

3、JWT token 生成和校验

在前后端分离的场景中,前后台主要用 jwt 交互,比如说前端发一个提交信息的请求,后台必须知道这个提交者的信息吧(提交者id),但为了使传输更安全,jwt包含了需要的用户信息以加密的方式传输以达到这个目的。

jwt全称Json Web Token,由三部分构成:头部(header)、载荷(payload)、签证(signature) 。

传输信息用到的就是载荷:就是存放有效信息的地方,就是这样的键值对构成的 Map(映射)对象 。

jwt 用 Claims 对象来存自定义的信息(也是一个键值对的 Map 对象):当登录的时候,就把当前的用户的信息存进去 。然后把信息存到一个 map 里面,通过工具生成 token 字符串返回给前台,当前台再次请求的时候就带上这个 token,然后取参数验证。

4、后端框架  Tornado

后端框架包括 Django 、Flask 和 Tornado

Tornado:

轻量级web框架;

异步非阻塞IO处理方式;

出色的抗负载能力;

优异的处理性能,不依赖多进程/多线程,一定程度上解决C10K问题;

WSGI全栈替代产品,推荐同时使用其web框架和HTTP服务器 。

5、webapp2

...

6、Django 实现 csrf 攻击保护

CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性 。 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

CSRF 攻击原理及过程:

a.  用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

b. 在用户信息通过验证后,网站 A 产生 Cookie 信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

c. 用户未退出网站 A 之前,在同一浏览器中,打开一个TAB页访问网站 B;

d.  网站 B 接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点 A ;

e. 浏览器在接收到这些攻击性代码后,根据网站 B 的请求,在用户不知情的情况下携带 Cookie 信息,向网站 A 发出请求 。网站A 并不知道该请求其实是由 B 发起的,所以会根据用户 C 的 Cookie 信息以 C 的权限处理该请求,导致来自网站 B 的恶意代码被执行。 

CSRF漏洞检测:

检测 CSRF 漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉 Referer 字段后再重新提交,如果该提交还有效,那么基本上可以确定存在 CSRF 漏洞。我们可以用 CSRF 漏洞检测工具进行检测 。

防御 CSRF 攻击:

验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

7、项目中遇到的困难以及解决

总结 ;
自由发挥的,最重要的是先把答案填满 。

8、最有成就感或最深刻的项目

...

9、KAFKA   消息队列   RabbitMQ    

KAFKA 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。这种动作(网页浏览、搜索和其他用户的行动)是现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像 Hadoop 一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。KAFKA 的目的是通过 Hadoop 一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。KAFKA 的目的是通过 Hadoop 的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息 。

当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能 。

RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。    

10、项目团队人数  开发时间

...

11、从远程仓库拉取分支到本地

...

12、进行版本回退

git reset --hard HEAD^ 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值