好的,我对服务器方面完全不熟悉,但是我有一个运行 MySql 的 VPS。
我想用 Python 创建一个移动应用程序,但我需要访问一个可供所有人使用的数据库。
所以现在我考虑在我的 VPS 上打开端口 3006,这样我们就可以从 python 应用程序访问数据库。但这似乎不是一个好的做法。
有什么建议吗?
答案1
不要将你的数据库公开。数据库中的一个错误或弱密码就可能被人删除/窃取/更改所有内容。
您的移动应用不应直接访问数据库,而应访问 API,在您的情况下,该 API 可能用 Python 编写,位于 Nginx 后面。您的 API 调用需要经过身份验证以避免滥用,并且最好限制速率以避免 DDOS 攻击。
答案2
为每个人开放一个数据库端口是个好主意吗?
......这感觉不是一个好的做法。
不是的。
当然,访问控制和安全是那里的大问题。
从应用程序设计的角度来看:当数据库和应用程序之间存在显著的延迟时,大多数与数据库相关的事物都会惨遭失败。
这就是为什么大多数手机应用程序都设计为连接 API 的原因之一。
答案3
非常糟糕的想法。反编译应用程序非常容易。然后任何人都可以访问您的数据库。假设应用程序每次安装都使用相同的登录名,那么您将面临大量数据泄露。即使您为应用程序的每个用户使用不同的登录名,您也需要非常艰巨的任务来在行级别上设置正确的表权限,我认为这根本不可能。
建立一个可以进行所有通信的 API 更加容易和正确
答案4
最近,MySQL 上出现了绕过身份验证的漏洞,攻击者可以利用该漏洞访问和修改/删除所有数据。因此,我强烈建议不要公开暴露数据库服务器!
如果仅用于维护,请使用 SSH 隧道,例如ssh -L 3306:127.0.0.1:3306 [email protected]
如果您确实需要从互联网上访问它,请限制对您正在访问的服务器的 IP 的访问(并在数据库服务器配置中启用 SSL)。