MySQL安全

MySQL安全

目的

  1. 保护好MySQL主机及可访问数据库的主机的安全
  2. 确保MySQL资深安全,使用强密码,尽可能分配最小权限
  3. 确保网络安全,关注信息在生活中的保密

原则和注意事项

  1. 加强安全意识,加密办公电脑的重要数据,不要将未加密的文件直接存储在公共云存储中。
  2. 减少公共wi-fi或有线网的连接,涉及账号密码等都要避免输入注意泄露。
  3. 一般所有数据库都要部署于内网,异地多活跨IDC的数据库同步慎重对待。
  4. 开放外网访问的MySQL要有相应的访问策略,例如用防火墙控制来源IP、端口等
  5. 条件允许增加网络安全服务进行检查审计。
  6. 在不安全的环境中访问公司或者维护服务器建议用VPN。
  7. 不要让除root用户以外的任何用户可访问mysql系统库。
  8. 用GRANT和REVOKE控制权限,不要超过权限也不要为所有主机授权。
  9. 不要给程序账号(PHP/JSP等)授予SUPER权限。
  10. 生产库不要留研发人员账号。
  11. 隔离生产、开发、测试环境,不允许研发人员直接修改生产环境或知道生产环境账号密码。
  12. 使用Linux密码原则。
  13. 避免SQL注入,原则上不信任客户端输入的任何数据。
  14. 非管理员禁用FILE权限,防止infile load data等操作通过mysqld进程在文件系统中读写文件。

常见攻击方式

  1. 会话劫持
  2. 中间人攻击
  3. 跨站点脚本攻击
  4. SQL注入

SQL注入详解

在程序层输入字符串注入SQL语句,设计不强壮的程序忽略检查,被数据库误以为正常的SQL执行,攻击者可通过此方式破坏或盗取数据。

图中是就是传说中的车牌注入

SQL注入原理

  1. 拼接恶意查询

    select * from users where user_id = $user_id;

    如果$user_id = “1234;delete from users”

    数据被恶意删除

  2. 注释执行非法命令

    select * from users where class_id = $class_id and sex = ‘F’;

    如果$user_id = “1234 OR 3 AND SLEEP(500) --”

    那么 SQL 将会变成:

    select * from users where class_id = 1234 OR 3 AND SLEEP(500) – and sex = ‘F’;

    SQL将执行500秒返回数据,大大阻碍效率

  3. 单引号拼接

  4. 添加真值判断

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值