python面试No7

  1. 同步, 异步, 并行, 并发, 阻塞, 非阻塞 ?

同步: 多个任务之间 有先后执行顺序; 需要等待上一个任务执行完成 才能执行下一个任务.

异步: 多个任务之间 没有先后执行顺序;不需要等待上一个任务执行完成 就可以执行下一个任务.

并行: 同一时刻多个任务同时进行.

并发: 同一时间段内 多个任务都在进行; 但是不会同一时刻同时运行.

阻塞: 当前线程被挂起处于等待状态, 不能执行其他线程.

非阻塞: 不会阻塞当先线程,会立刻返回

  CSRF攻击原理和防御CSRF攻击?

CSRF(Cross Site Request Forgery): 中文是跨站请求伪造. CSRF攻击者在用户已经登录目标网站之后, 诱使用户访问一个攻击页面, 利用目标网站对用户的信任, 以用户身份在攻击页面对目标网站发起伪造用户操作的请求, 达到攻击目的 .

  • 完成一次CSRF攻击, 必须满足两个条件:
  1. 用户登陆信用网站B, 产生cookie信息并返回给服务器
  2. 在不登出信用网站B的情况下, 访问危险网站C  
  • CSRF攻击攻击原理及过程如下:

       1. 用户A登陆受信任网站B ;

       2. 网站B产生Cookie信息并返回给浏览器,此时用户登录网站B成功,可以正常发送请求到网站B ;

       3. 用户未退出网站B的情况下, 在同一浏览器中, 访问危险网站C ;

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

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

  • 防御CSRF攻击:

       目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

   3. 设计模式六大原则:

1)单一职责原则 : 就一个类而言,应该仅有一个引起它变化的原因; 通俗的说,即一个类只负责一项职责

2)里氏替换原则 : 子类型必须能够替换掉它们的父类型

         既:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而其它察觉不出父类对象和子类对象的区别。

         也就是说,在软件里面,把父类都替换成它都替换成它的子类,程序的行为没有变化。

 

 

3)依赖倒转原则:  A.高层模块不应该依赖低层模块。两个都应该依赖抽象

              B.抽象不应该依赖细节,细节应该依赖抽象

 

4)接口隔离原则 :  客户端不应该依赖它不需要的接口; 一个类对另一个类的依赖应该建立在最小接口上.


5)迪米特法则 :  如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用;如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。


6)开闭原则: 是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改;

      特征1:对于扩展是开放的(Open for extension);

      特征2:对于更改是封闭的(Closed for modification)。

 

猜你喜欢

转载自www.cnblogs.com/longpy/p/11097533.html