php面试专题---20、MySQL的安全性考点
一、总结
一句话总结:
还是得多看视频,教程看的浮光掠影,容易get不到重点:比如预处理防sql注入之前是挺熟,后面就忘记了,而且看文章get不到点
1、SQL查询的安全方案?
1.使用预处理语句防SQL注入
2.写入数据库的数据要进行特殊字符的转义
3.查询错误信息不要返回给用户,将错误记录到日志
2、mysql预处理防sql注入实例?
|||-begin
delete from user where id=1; GET ?id=1 user/delete/?id=1 user/delete/?id=1 or 1=1; (delete from user where id=1 or 1=1) 预处理是先解析了delete from user where id=? 这句话,后面再有1 or 1=1进来,直接当做值了,不再解析这个or
|||-end
预处理就是预先解析sql语句,使那些插入进来的值的结构不再解析,比如 1 or 1=1中的or
3、MySQL的其他安全设置?
1.定期做数据备份
2.关闭远程访问数据库权限
3.修改root口令,不用默认口令,使用较复杂的口令
4.改变root用户的名称
1.定期做数据备份
2.不给查询用户root权限,合理分配权限
3.关闭远程访问数据库权限
4.修改root口令,不用默认口令,使用较复杂的口令
5.删除多余的用户
6.改变root用户的名称
7.限制一般用户浏览其他库
8.限制用户对数据文件的访问权限