1

我正在开始一个项目(实际上,准确地说是两个)并使用 SQL 数据库。我是新的 SQL,但对我现在正在尝试做出的一个决定感到好奇。

一个项目是我们制作的东西的内部跟踪系统,另一个是我正在制作的小游戏。我预计第一个有 1 到 10 个并发连接,不知道但可以梦想第二个有三到四位数的连接。

我对 SQL 安全性和性能很好奇,在阅读资料时,这个问题不是我找到的解决方案:如果我想要安全和快速,让用户在服务器上登录是否更好,并让服务器访问您的 SQL 数据库,还是给每个用户一个 SQL 连接更好(我假设从服务器建立此连接以防止人们通过在游戏中窥探窃取您的登录信息)?

基本上,我是否应该在服务器上编写访问数据库的脚本,并通过只让服务器写入我的 SQL 数据库来将并发连接保持在最低限度(这是我假设我应该为我的游戏做的事情,因为它将有一些持久的在线stats),还是我应该从客户端直接连接到数据库(我看到大多数教程都是这样做的,我认为这对业务方来说更容易接受)?

阅读它,但这还没有被覆盖。我自己会倾向于第一个,因为通过服务器处理每个连接请求并通过服务器返回信息听起来更安全,但我见过的大多数应用程序都在做第二个,而且我所读的内容都没有谈论/或者。PS:是的,我知道我需要查找更多内容,并且我会为安全性和性能做一些事情,我现在只是对这个问题感到好奇。谢谢你的回答。

4

2 回答 2

1

你最终要做的是配置一个连接池,这是你想要分发给用户的最大并发连接数,它还允许连接被“重用”到一个点。现在就直接连接到数据库的客户端而言,永远不要这样做。您要做的是配置一个非特权用户帐户,该帐户仅对您的数据库具有读取权限,这将是检索数据并将其传递给客户端的帐户。关键是这个只读帐户不能写入数据库,因此它可以最大限度地减少数据损坏的可能性。

现在您需要做的是让您的应用程序连接到服务或某种类型的接口,这些接口将过滤掉不适当的数据,例如攻击(SQL 注入),一旦这些数据被清理,您就可以将其传递给您的数据层。一旦进入数据层,您将打开一个连接并将干净+安全的数据推送到您的数据库中。交易提交后,读者帐户将能够检索它。

因此,回顾一下,您至少需要两 (2) 个数据库帐户。一个是只读的,这是给用户的,一个是用来做工作的,它隐藏在你的应用程序中,不能被外部访问。

于 2013-01-09T15:03:46.890 回答
-1

服务器是处理 SQL 查询的服务器。客户端不应访问 SQL 数据库。

于 2013-01-09T15:03:43.940 回答