3

对于一个小项目,我需要在 MySQL 中存储一些数据。用户遍布世界各地并运行 .net ClickOnce 应用程序。访问的数据并不是真正机密的,即使有人可以访问,从隐私的角度来看也不会造成损害。

从技术上讲,可以将 MySQL 数据库放在某处的服务器上,并让每个人都通过Internet 上的Connector/Net进行连接。 但这是可取的吗?

  1. 协议是否足够稳定/健壮,可以处理速度较慢的互联网连接?
  2. 这会是一个严重的安全风险。数据加密不是主题,但密码加密才是。将 MySql 数据库(端口)打开到 Internet 会有危险吗?

或者,我可以通过 Web 服务或其他方式“包装”数据库访问。但当然这是我想避免的一些开销。那么通过 Internet 连接 MySQL 是一个有效的选择吗?

评论:

4

2 回答 2

5

我建议为您的远程 .NET 应用程序实现一个 REST Web 服务层来与之通信。然后,您可以让处理 Web 服务请求的服务器对数据库具有本地访问权限,并且您不必担心 MySQL 协议是否能胜任这项工作。

我的经验是 MySQL 协议可能在 WAN 上工作,但它实际上是在本地网络上使用的,因此 WAN 的延迟会使事务处理速度慢得无法忍受。

此外,MySQL 服务器必须公开其端口(默认情况下为 3306),这并没有真正加强,因此除非您通过 VPN 或 stunnel 或其他不安全的东西连接。

MySQL 客户端/服务器协议不会以纯文本形式传输密码,它会在发送之前在客户端对密码进行哈希处理。但我知道 MySQL Connector/NET 不使用 MySQL 客户端,所以我不确定它是否在客户端对密码散列做同样的事情。

于 2013-02-21T14:58:33.933 回答
3

1)本协议稳定,使用时间长。

2)您不应该在本地网络之外共享您的数据库,这是一个很高的安全风险。您应该在您的数据库服务器上创建一些层,您将从数据库中访问数据。您也可以在client-side和之间制作 WCF 服务器db

于 2013-02-21T14:56:20.423 回答