问个数据库安全性的问题

设置

  • 使用云布置数据库,使用 13306端口
  • 云服务器 13306端口 设置白名单,只允许两个 ip 进来
  • 服务器上开放了 80 端口, 并且是不做任何限制的
  • 服务器上 ssh端口 设置为 2236
  • 服务器禁用 root 账户, 只允许普通用户登陆
  • mysql 只允许本地访问
  • 系统是布置在公司电脑上,通过内网访问的
  • 线上线下定期备份数据库
    做了上面 7 点的话, 数据库还会被黑吗? 从运维角度还需要做什么设置增大安全性
    会存在黑客从80端口黑进来, 把数据库删掉篡改的可能性吗
本作品采用《CC 协议》,转载必须注明作者和本文链接
reading
附言 1  ·  1年前

统一说下,80端口是用作小程序转发的,跟数据库没关系,至于系统则是布置在本地内网访问的只是mysql读取的是云服务器上的数据库,就这样,80端口还能黑掉数据库吗

附言 2  ·  1年前

再补充说明:系统只开启两个端口,48382,38473,一个用于宝塔,一个用户数据库,并且两个端口都在云服务器上做了ip白名单设置,就凭这两个端口,还会被黑吗

白小二
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 18

这个注意或可操作的点有很多,我说下我现在能想到的吧,尽量绝(有)对(多)安(余)全。

  1. 定时备份数据库(完整备份,差异备份),也可以考虑备份后上传到异地,备份可以防止数据库被清空、加密无法。
  2. sql 注入:前端只有2 种数据类型需要写入数据库,数字(浮点数字)和字符串。尽量减少手动拼接 sql 语句,如必须拼接,那需要强制转换类型,mysql 有相关函数 mysqli_real_escape_string
  3. xxs: 比如插入 < img src=’xxx/path' /> , 如果在后台打开这条记录, 别人很可能用这个获取后台路径
  4. 保持软件最新:http://www.cnnvd.org.cn/ 好多,个人的话 yum update,省事。如前段时间爆出的 Apache Log4j
  5. php,以及 composer 包漏洞,及时更新。
  6. 尽量少开放端口,仅开放必要端口,80、443 没法改,22,3306 可以改下, 本机环境可以不用改。
  7. 尽量少用公共wifi 上后台和敏感数据,有不确定性。
  8. ssh 登录服务器,设置好 sudo 权限等。检查所有可登录用户
  9. 用户及密码:尽量修改或不用默认账号,密码强度
    • 不用默认账号,分账号(尽量不要用同一个账号管理所有mysql 数据库)
    • 10位以上(非常推荐),大写+小写+数字+符号,4选3或全部
  10. 很重要,尽量少写漏洞,了解危险操作与处置方法
    • 如上传的图片后面有 php 代码,访问图片的时候会执行php,之前有这个漏洞,不知现在有没有修复,如访问图片 1.jpg 的链接 xxx/1.jpg/x.php

如有错误欢迎指出。

PS:如果真的注重安全性,安全性又很重要,建议找专人管理服务器,如运维、安全专家等。没准哪里埋个坑就破防了。

1年前 评论

会存在黑客从 80 端口黑进来, 把数据库删掉篡改的可能性吗

如果你代码里面使用的 MySQL 账户权限过高且存在漏洞的话,是有可能的。

如果你更关注数据库安全的话,比较推荐商业数据库服务。

对于服务器,应该在关闭 Root 登录的同时,关闭掉使用密码登录,改换更加安全的 SSH Key 进行登录(并建议给生成的私钥添加密码)

对于运行的服务,原则上应尽量低的权限。

1年前 评论

80端口是否安全,取决于你的80端口运行的程序是否有漏洞,有漏洞的话啥都白搭

1年前 评论

数据库不是专门的服务器的话,80端口常见的sql注入可能会对数据进行破坏,数据库的数据毕竟保存在磁盘上,80端口上传文件漏洞,redis 等其他软件漏洞也有可能入侵系统。还是建议购买云数据库。

1年前 评论
php_yt (作者) 1年前

这个注意或可操作的点有很多,我说下我现在能想到的吧,尽量绝(有)对(多)安(余)全。

  1. 定时备份数据库(完整备份,差异备份),也可以考虑备份后上传到异地,备份可以防止数据库被清空、加密无法。
  2. sql 注入:前端只有2 种数据类型需要写入数据库,数字(浮点数字)和字符串。尽量减少手动拼接 sql 语句,如必须拼接,那需要强制转换类型,mysql 有相关函数 mysqli_real_escape_string
  3. xxs: 比如插入 < img src=’xxx/path' /> , 如果在后台打开这条记录, 别人很可能用这个获取后台路径
  4. 保持软件最新:http://www.cnnvd.org.cn/ 好多,个人的话 yum update,省事。如前段时间爆出的 Apache Log4j
  5. php,以及 composer 包漏洞,及时更新。
  6. 尽量少开放端口,仅开放必要端口,80、443 没法改,22,3306 可以改下, 本机环境可以不用改。
  7. 尽量少用公共wifi 上后台和敏感数据,有不确定性。
  8. ssh 登录服务器,设置好 sudo 权限等。检查所有可登录用户
  9. 用户及密码:尽量修改或不用默认账号,密码强度
    • 不用默认账号,分账号(尽量不要用同一个账号管理所有mysql 数据库)
    • 10位以上(非常推荐),大写+小写+数字+符号,4选3或全部
  10. 很重要,尽量少写漏洞,了解危险操作与处置方法
    • 如上传的图片后面有 php 代码,访问图片的时候会执行php,之前有这个漏洞,不知现在有没有修复,如访问图片 1.jpg 的链接 xxx/1.jpg/x.php

如有错误欢迎指出。

PS:如果真的注重安全性,安全性又很重要,建议找专人管理服务器,如运维、安全专家等。没准哪里埋个坑就破防了。

1年前 评论
aodaobi

我之前的项目除了你说的这些安全问题之外,最主要是代码中使用的mysql 账户权限精细到单个字段 web api 是单独的msyql user ,update 权限都要申请审核,del权限基本上不会在web api 的mysql user中 admin 是单独的user

1年前 评论

统一说下,80 端口是用作小程序转发的,跟数据库没关系,至于系统则是布置在本地内网访问的只是 mysql 读取的是云服务器上的数据库,就这样,80 端口还能黑掉数据库吗

sql注入大部分来自各个连接中传输的变量以及语句,通过修改你业务的语句体进行更改数据库,所以只要你业务能正常运行,项目能修改数据库,就有可能被sql注入

1年前 评论
TomforPhP 1年前

对于你的各项补充说明,这边建议你先搞懂什么叫sql注入,明白原理就不用来回补充了

1年前 评论
白小二 (楼主) 1年前
working (作者) 1年前
白小二 (楼主) 1年前

大家都给你讲的这么明白了,怎么还补充啥呢,80端口的程序有漏洞就会被黑,宝塔有漏洞通过开放的端口当然也会被黑,甚至拿到你的服务器权限,想干啥就干啥了。

1年前 评论
白小二 (楼主) 1年前

找人做一下安全检测

1年前 评论
白小二 (楼主) 1年前
随波逐流

没有 绝对的安全,只有 相对的安全,不犯 低级的错误

1年前 评论
sanders

建议把系统也部署到云端,哪怕是通过远程桌面登录上去执行运维操作也一般比公司内网安全且稳定。

不建议用宝塔,用也不要在公司内网部署,参见上一条。

通过80端口进来尝试各种市面上已知的程序或框架漏洞来实施入侵检测也是很常见的。很多云服务提供渗透检测,建议采购尝试一下。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!