1:使用预处理语句防止SQL注入
2:写入数据库的数据要进行特殊字符的转义,比如字符中带单引号和双引号需要在应用层转义,这样为了防止SQL注入
3:查询的错误信息不要返回给用户,将错误记录到日志。错误信息不要显示到应用中,这样用户会获取到数据库信息,这样就是不安全,我们要把错误屏蔽,定期排查错误看日志就可以了
注意:PHP端尽量使用PDO进行数据库相关的操作,PDO拥有对预处理语句很好的支持方法,Mysqli也有,但是可扩展性不如PDO,PDO支持扩展的库比较多,不仅仅支持Mysql,效率略高于PDO,但Mysqli仅仅支持Mysql,Mysql函数库在新版本中已经趋向于淘汰,所以不建议使用,而且它没有很好的支持预处理的方法
4:定期做数据备份
5:不给查询用户root权限,合理分配权限;比如服务器有好多应用,不能每个都给root权限
6:关闭远程访问数据库权限,这样有可能会被破解,就不安全了
7:修改root口令,不用默认口令,要复杂,不能轻易被猜到
8:删除多余的用户
9:改变root用户的名称,改一些别人不容易猜到的
10:限制一般用户浏览其他库;比如多个应用,每个应用建立独立的用户,不能访问其它库
11:限制用户对数据文件的访问权限,对文件做权限的限制,不仅仅每个用户限制访问mysql库的权限,而且要限制mysql存储数据的data目录权限
相关文章
- 10-23APP服务端API(数据接口)设计应该考虑到的问题
- 10-2351学工坊整理|究竟应该选哪个版本的MySQL?!
- 10-23mysql-我应该在ubuntu Natty Narwhal中安装哪个版本的percona db软件包?
- 10-23innodb的Mysql low_priority:选择应该在死锁中回滚哪个查询
- 10-23我应该如何解释mysql慢查询日志中的“锁定时间”?
- 10-23MySQL语句应该注意的问题
- 10-23phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码
- 10-23mysql – 我们应该何时使用一对一的关系模型,而不是将属性添加到同一个表中?
- 10-23移动APP服务端API设计应该考虑到的问题
- 10-23我应该使用Neo4j寻找相似的用户还是坚持使用MySQL之类的东西?