2013-01-09 254 views
1

我正在启动一个项目(实际上是两个),并使用SQL数据库。我是新的SQL,但对目前我正在尝试做出的一个决定感到好奇。SQL /服务器连接和安全

一个项目是东西的内部追踪系统我们做,另一种是小游戏我正在做。我预计第一个会有大约1到10个并发连接,但没有想法,但可以在第二个连接上实现三倍到四倍的连接。

我很好奇SQL安全性和性能,并在阅读的东西了,这个问题不是一个我已经找到了解决方案:如果我想成为安全,快捷,是它更好地让用户登录在服务器上,并让服务器访问你的SQL数据库,还是最好给每个用户一个SQL连接(我假设从服务器连接这个连接以防止人们通过游戏中的窥探窃取你的登录信息)?

基本上,我应该在访问数据库的服务器上创建脚本,并通过只让服务器写入我的SQL数据库来将并发连接降到最低(这是我认为我应该为我的游戏做的事情,因为它会有一些持续的在线统计数据),还是应该从客户端直接连接到数据库(这是我看到大多数教程做的事情,而我认为这对于业务部门来说更容易接受)?

读上去就可以了,但是这并没有被覆盖。我倾向于第一个自己,通过服务器处理每个连接请求,并通过服务器返回信息听起来更安全,但我见过的大多数应用程序都做了第二个,而且我读到的任何一个都没有谈论关于/要么。 PS:是的,我知道还有很多我需要查看,我会为了安全和性能而做,但我现在只是好奇这个问题。谢谢你的回答。

回答

1

你最终做的是配置连接池,这就是你要分发给用户的并发连接的最大数目,这也让连接被“重用”一个点。现在就客户端直接连接到数据库而言,千万不要这样做。你想要做的是配置一个只有数据库读权限的非特权用户帐户,这将是检索数据并将其传递给客户端的帐户。关键的一点是,这个只读帐户无法写入数据库,因此它最大限度地减少了数据损坏的可能性。

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

所以回顾一下,你至少需要两(2)数据库帐户。一种是只读的,这是针对用户的,一种是用于执行工作的,这是隐藏在应用程序中的,不能从外部访问。

+0

感谢您提供的信息,如果我稍后需要更多信息,我会在今天晚些时候将此标记为答案,以便为我留下一些空间,并将根据此^查找更多信息^。^希望它能让我更多地阅读和学习。 - 我也意识到SQL和PHP注入并计划过滤所有传入数据,但没有考虑按照我的计划制作只读数据库(最初)将所有数据库工作都放在C#脚本中的服务器上。谢谢(你的)信息。 – Charles

+0

@Charles它不是一个只读数据库,它是一个**用户**,它具有只读访问权限。 – Woot4Moo

+0

这就是我最初的想法(以及它如何在我的自定义程序中工作)。我误读了数据库和数据库帐户,并且计算出来的SQL需要一个只读数据库,谢谢你告诉我重新阅读。 >> ;;; – Charles

-1

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

+0

没有太多的信息在这一个,它绝对不回答安全方面。 – Woot4Moo