php面试题三
php面试题三
一、总结
1、高效实用mysql的方法
2、如何防止sql注入
3、如何防止盗链
4、一个安全的用户登录系统需要注意哪些方面
二、php面试题三
11.如何设计或配置 Mysql,才能达到高效使用的目的。
1)设置字段的索引
2)explain select * from t1 where name="user2";
3)desc select * from t1 where name="user2";
4)慢查询日志
4)show status like 'com_%";
12.如何进行防 SQL 注入
//表单尽量用 post 提交,核心用户验证都走 post,避开 get
1.表单尽量用 post,表单判断控制走 get,因为 get 比 post 速度快
2.$_SERVER[HTTP_REFERER]判断提交者的源头
3.开启 addslashes,在’,“,\头加\
4.密码一定设置 md5 加密
5.服务器本身的安全(web+mysql)
12.1 防止盗链
1.服务器上防止
Apache 和 nginx 做 rewrite 基于源来做判断阻止盗链
2.代码防止
$_SERVER[HTTP_REFERER]
8.mysql优化
1)服务器优化
1)服务器负载均衡
2)数据库优化
1)myisam表引擎
3)表优化
1)分表
2)字段索引
4)sql语句优化
1)写sql语句时,where后面的字段尽量使用加索引的字段,而且要小心有的sql语句会让索引失效.
9.安全登录系统
1)验证码
2)限制登录时间
3)动态口令
4)短信验证
10.防sql注入
1)mysql服务器用户权限问题
2)用addslashes函数把表单数据进行转义处理
3)用htmlspecialchars函数把表单数据进行实体化
4)使用mysql预处理机制发送执行sql语句
5)及时给mysql软件更新补丁
11.防盗链
$_SERVER['HTTP_REFERER'];
#获取上一个页面的来源url,通过url中的域名或ip可以判断是否是来自本机的某一个脚本