关于数据库安全的一些思考

背景

前一阵子,刚想继续开发之前耽误的项目,结果发现前端请求总是报错500,经查发现是数据库中的表和数据都被清空了,同时MySQL中多了一个只有一张表的数据库,查看表里的内容后才发现是被攻击了,需要向指定账户支付比特币才能还原数据。不过因为现阶段中数据库中的数据还都是mock出来的数据而且我的数据库脚本还在,所以也就没太当回事。直到今天,跟同学一块接的外包项目的数据库也出现了相同的问题,我才意识到问题的严重性。

原因复盘

没有进行IP限制:

因为没接触过上线的项目,在之前接触的 demo 级项目中,通常都是将数据库部署在服务器上,然后通过远程连接在本地上进行开发,然后再将后端部署在服务器上与前端进行交互。然后没有养成良好的开发习惯,为了实现远程连接,通常都是直接将 mysql 数据库中的 user 表中 root 的 host 设置为 % ,也就是所有的IP都可以用root用户进行登录,这也给了攻击者可乘之机。

数据库密码设置过于简单

这个问题还是因为开发习惯不好,数据库的密码通常都是123456、root等,过于简单,使得攻击者能轻而易举试出数据库密码进而施行进一步攻击。

服务器密码泄露

这个问题在使用服务器的初期经常会犯的错误,为了登陆时候的方便,也是将登陆密码设置的太简单,密码被攻击者试出来从而导致密码泄露,让攻击者能够进一步为非作歹。

解决方案

限制远程连接的IP

应避免将mysql.user表中的host字段直接设置为%,应限制在指定IP或者某个子网中。

针对每个项目创建具体的用户

例如在开发A项目时,创建一个用户a,然后仅赋予他A项目数据库的操作权限,类似,在开发B项目时,创建一个新用户b,这样避免了root用户的滥用,也更方便管理,root用户的host直接限制在localhost。

远程连接服务器时尽量使用密钥连接

使用SSH密钥对登录认证更为安全可靠,密钥对安全强度远高于常规用户口令,可以杜绝暴力破解威胁。

密码应尽量设置的复杂一些

密码设计的复杂,可以增加攻击者的破解难度,一定程度上提高了系统的安全性。

直接上高防服务器

哈哈哈这个解决方案的成本太大了

个人的一些思考

经过了这两次被攻击的经历,我算是体会到了安全性这个词的含金量,试想如果这个是已经上线了的项目,结果因为被攻击导致用户数据丢失,那损失将是巨大的。当然也使得我对开发多了一些思考,像之前一直忽视的权限问题、用户问题以及如何在数据库被攻击后如何快速恢复将损失降到最小等等。有时候出现问题并不全是坏事,在解决问题的过程中你进行的调研和思考,会使你的技术底蕴得以更快的成长,也是将之前学过的碎片化的知识串联起来的过程。最后希望大家可以根据我的经历进行排雷,也十分开心如果这篇文章能帮助到大家。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
教师在教授数据库原理课程中,针对数据库安全性这一章节的教学内容如下: 1. 数据库安全性概述: - 介绍数据库安全性的概念和重要性,强调数据保护的必要性和挑战。 - 解释不同类型的安全威胁,如数据泄露、数据丢失和未授权访问等,以及可能导致的后果。 2. 数据库安全策略和控制措施: - 详细介绍数据库安全策略和常用的控制措施,如访问控制、身份验证、加密、审计等。 - 解释这些措施的原理和目的,以及在数据库安全性中的作用。 3. 访问控制: - 解释访问控制的概念和原则,包括基于角色的访问控制和基于权限的访问控制。 - 演示和练习如何创建和管理用户账户,并给用户分配适当的权限。 4. 身份验证和授权: - 介绍身份验证的概念和方法,如密码验证、双因素认证等。 - 讲解授权的概念和原则,如基于角色的授权和基于对象的授权。 5. 数据库加密: - 介绍数据库加密的概念和方法,包括数据传输加密和数据存储加密。 - 演示和练习如何使用数据库加密功能来保护敏感数据。 6. 审计和监控: - 解释审计的概念和目的,以及如何配置和使用数据库的审计功能。 - 强调监控数据库活动的重要性,介绍常用的监控工具和技术。 通过以上教学内容,教师可以帮助学生全面了解和掌握数据库安全性的基本原理、策略和控制措施。通过实例演示和练习,学生能够在实际操作中应用所学内容,加深对数据库安全性的理解和应用能力。同时,教师也可以引入案例分析和讨论,让学生思考和解决真实的数据库安全性问题,提高他们的问题解决能力和综合应用能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值