php面试知识点,PHP面试知识点

一.redis和memcached

Redis 和 Memcache 都是基于内存的数据存储系统。Memcached是高性能分布式内存缓存服务;Redis是一个开源的key-value存储系统。与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串、哈希 表、链表、等数据类型的相关操作

1.储存的数据类型

redis:1.String(字符串)512MB。  2.Hash(哈希) 3.List(列表) 4.Set(集合) 5.zset(sorted set:有序集合)

Memcached:仅支持简单的key-value结构的数据

2.区别

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;

2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;

3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;

4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10;

5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;

6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);

7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;

8、Redis支持数据的备份,即master-slave模式的数据备份;

9、应用场景不一样:Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等。

二.mysql数据库优化

InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁

InnoDB支持事务,MyISAM不支持

InnoDB支持外键,而MyISAM不支持

一个表最多只能创建一个主键,但可以创建多个唯一索引。

1、选取最适用的字段属性,尽量把字段设置为NOTNULL

2、使用连接(JOIN)来代替子查询(Sub-Queries)

3、使用事务 保持数据库中数据的一致性和完整性

4、使用外键

5、使用索引

三.PHP开发安全机制

1. 禁用远程代码执行

2.将PHP错误记入日志

3.为了确保程序的安全性,健壮性,数据验证应该包括

1、php一些安全配置

(1)关闭php提示错误功能

(2)关闭一些“坏功能”

(3)严格配置文件权限。

2、严格的数据验证,你的用户不全是“好”人

2.1为了确保程序的安全性,健壮性,数据验证应该包括内容。

2.2程序员容易漏掉point或者说需要注意的事项

3、防注入

3.1简单判断是否有注入漏洞以及原理

3.2常见的mysql注入语句

(1)不用用户名和密码

(2)在不输入密码的情况下,利用某用户

(3)猜解某用户密码

(4)插入数据时提权

(5)更新提权和插入提权同理

(6)恶意更新和删除

(7)union、join等

(8)通配符号%、_

(9)还有很多猜测表信息的注入sql

33防注入的一些方法

2.3.1 php可用于防注入的一些函数和注意事项。

2.3.2防注入字符优先级。

2.3.3防注入代码

(1)参数是数字直接用intval()函数

(2)对于非文本参数的过滤

(3)文本数据防注入代码。

(4)当然还有其他与addslashes、mysql_escape_string结合的代码。

4、防止xss攻击

4.1Xss攻击过程

4.2常见xss攻击地方

4.3防XSS方法

5、CSRF

5.1简单说明CSRF原理

5.2防范方法

6、防盗链

7、防拒CC攻击

四.cookie 和session 的区别

区别:

1、数bai据存放du位置不同:

cookie数据存放在客户的浏览zhi器上,session数据放在服务器上。

2、安全程度不同dao:

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、性能使用程度不同:

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、数据存储大小不同:

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。

在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。

而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。

Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值