PHP高端厂的问题

boss看见的总结

一般PHP面试都会问到前端知识、尤其VUE各位都需要懂点前端内容

PHP:

CSRF和XSS攻击分别是什么

解答: 
1.CSRF的基本概念、缩写、全称
CSRF(Cross-site request forgery) 跨站请求伪造
2.CSRF的攻击原理
用户是网站A注册用户,且登录进去,于是网站A就给用户下发cookie
要完成一次CSRF攻击名,受害者必须满足两个必要条件
(1)登录受信任网站A、并在本地生成Cookie (如果用户没有登录网站A,那么网站B在诱导时候,请求网站A的api接口时,会提示登录)
(2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)
我们在讲CSRF时,一定要把上面的两点说清楚。
温馨提示:Cookie保证了用户可以处于登录状态、但是网站B其实拿不到Cookie
3.CSRF如何防御
方法一、Token验证:(用的最多)
(1)服务器发送给客户端一个TOKEN;
(2)客户端提交的表单中带着这个TOKEN;
(3)如果这个token不合法,那么服务器拒绝这个请求
方法二、隐藏令牌:
把token 隐藏在http的head头中
方法二和方法一有点像、本事没有太大区别、只是使用方式上有区别
方法三、Referer验证:
Rederer指的是页面请求来源、意思是、只接受本站的请求、服务才做响应、如何不是就拦截
XSS
1、XSS的基本概念
XSS(Cross Site Scripting) 跨域脚本攻击
Xss的攻击原理:
不需要你做任何的登录认证、他会通过合法的操作(比如在url中输入、在评论框中输入),向你得页面注入脚本可能是JS、html代码块等
最后导致的结果可能是:
盗用Cookie破坏页面的正常结构、插入广告等恶意内容D-doss攻击
xss的攻击方式:
(1)反射型
发出请求是,xss代码出现在url中、作为输入提交到服务器端、服务器端解析后响应,xss代码随响应内容传回给游览器、最后游览器解析进行xss代码、这个过程像一次反射、所以叫反射型xss
(2)存储型存
储型xss和反射型xss的差别在于提交的代码会存储在服务端(数据库、内存、文件系统等),下次请求是目标页面时不用提交xss代码
xss的防范措施(encode + 过滤)
xss得防范措施主要有三个
1、编码:
对用户输入得数据进行Html Entity 编码
把字符串转换成转义字符
encode 得作用是将$var 等一些字符进行转化、是的游览器在最终输出结果上一样得
2、过滤:
移动用户输入的和事件相关得属性、入onerror 可以自动触发攻击
有onclikc等移除用户输入的style节点、script节点iframe节点
3、校正
避免直接对HTMLEntity进行解码使用DOMparse 转换、校正不配对得DOM标签
CSRF和XSS区别
区别一、
CSRF:需要用户先登录网站A获取cookie
XSS:不需要登录
区别二、
CSRF:是利用网站A本身漏洞,去请求网站A得API
XSS:是向网站A注入js代码、然后执行js里面的代码、篡改网站A内容

抽象类和接口分别是什么

抽象类:

是基于类来说,其本身就是类,只是一种特殊的类,不能直接实例,可以在类里定义方法,属性。类似于模板,规范后让子类实现详细功能。

接口:

主要基于方法的规范,有点像抽象类里的抽象方法,只是其中对于抽象方法来说,更加独立。可让某个类通过组合多个方法来形成新的类。

抽象类和接口的相同点:
  1. 都是用于声明某一种事物,规范名称、参数、形成模块、未有详细的实现细节。
  2. 都是通过类来实现相关的细节工作。
  3. 语法上,抽象类的抽象方法与接口一样,不能有方法体、即{}符号。
  4. 都可以用继承,接口可以继承接口形成新的接口。
抽象类与接口的不同点:
  1. 抽象类可以有属性、普通方法、抽象方法,但接口不能有属性、普通方法、可以有常量
  2. 抽象类内未必有抽象方法,但接口内一定会有“抽象”方法
  3. 语法上有不同
  4. 抽象类用abstract关键字在类前声明,且有class声明为类,接口使用interface来声明,但不能用class来声明,因为接口不是类。
  5. 抽象类的抽象方法一定要用abstract来声明,而接口则不需要
  6. 抽象类使用extends关键字让子类继承父类后,在子类实现详细的抽象方法,而接口则是用implements让普通类再类里实现接口的详细方法、且接口可以一次性实现多个方法、用逗号分开各个接口即可
各自的特点:
  1. 抽象类内未必有抽象方法,但有抽象方法的类,则必是抽象类
  2. 抽象类内,即便全是具体方法,也不能够实例化,只要新建类来继承后,实例继承类才可以
  3. 接口可以让一个类一次性实现多个不同的方法
  4. 接口本身就是抽象的,但注意不是抽象类,因为接口不是类,只是其方法是抽象的。所以,其也是抽象的
应用与结合
一、抽象类与接口的结合
<?php 
interface work{ 
  public function say(); 
}
abstract class a implements work{ 
  public function showlove(){ 
    echo 'love you<br />'; 
  } 
}
class b extends a{ 
  public function say(){ 
    echo 'hello, i m in b'; 
  } 
}
$k=new b(); 
$k->say();
/* 
以上程序能正常执行
普通类implements接口后,就变成了抽象类了,这就好像是直接给抽象类增加了一个抽象方法。
*/
二、接口与继承的结合

父类是普通类,子类继承后,同时在子类里实现接口。

疑问:这样的做法是否有意义,在实际开发中是否有这样的应用?

<?php
interface kk{ 
  public function say(); 
}
class a { 
  public function show(){ 
    echo '我是父类<br />'; 
  } 
}
class b extends a implements kk{ 
  public function say(){ 
    echo '我是继承A类,同时实现say接口的<br />'; 
  }
}
$b=new b(); 
$b->show();//我是父类
$b->say();//我是继承A类,同时实现say接口的

谈谈对设计模式的了解

创建型模式
工厂模式、简单工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。

记忆方式: 3工1单(工厂、简单、抽象、单例)

结构性模式

适配器模式、 组合模式、 代理模式、外观模式、装饰器模式、桥接模式、享元模式。

记忆方式:乔装歪戴想始祖(桥接、装饰器、外观、代理、享元、适配器、组合)

行为型模式

观察者模式、迭代子模式、策略模式、命令模式、模板方法模式、责任链模式、备忘录模式、状态模式、访问者模式、中介者模,注册模式。

记忆方式:观爹测命(观察者、迭代、策略、命令)

谈谈对微服务的理解

说说垃圾回收机制

高并发的解决方案

如何防范SQL注入

什么是时序攻击

魔术方法有哪些


Laravel:

依赖注入实现原理

常用集合方法

常用辅助函数

常用中间件

生命周期


Swoole:

谈谈对协程的理解

和php-fpm的区别


MYSQL:

MySAM和InnDB区别

索引结构(解释B+树)

select执行过程

事务隔离级别

索引回表

索引失效

分库分表

读写分离


Redis:

数据类型

淘汰策略

事务机制

缓存击穿

分布式锁

集群


Vue:

双向数据绑定原理

组件通信

生命周期


其他:

ElasticSearch

MeiliSearch

RabbitMQ

MongoDB

Kafka

网站:

  1. http://xuesql.cn/ 此网页是练习sql语句你可以跟着步骤走、联系原生sql语句
  2. https://www.topgoer.cn Go 语言
  3. https://www.code-nav.cn 编程导航学习资源程序员鱼皮的哈哈
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值