【问题标题】:SQL/server connection and security [closed]SQL/服务器连接和安全[关闭]
【发布时间】:2013-01-09 14:55:07
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: sql database security connection


    【解决方案1】:

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

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

    因此,回顾一下,您至少需要两 (2) 个数据库帐户。一种是只读的,供用户使用,另一种是用于执行工作,它隐藏在您的应用程序中,无法从外部访问。

    【讨论】:

    • 感谢您的信息,如果我稍后需要更多信息,我将在今天晚些时候将此标记为答案,以便为我留出空间,并会根据此信息查找更多信息 ^.^ 希望它会给我更多的阅读和学习。 - 我也知道 SQL 和 PHP 注入并计划过滤所有传入数据,但没有想到制作只读数据库,因为我计划(最初)将所有数据库工作放在 C# 脚本中的服务器上。感谢您的信息。
    • @Charles 它不是一个只读数据库,它是一个具有只读访问权限的用户
    • 这就是我最初打算这样做的方式(以及它现在在我的自定义程序上的工作方式)。我误读了数据库和数据库帐户,并认为 SQL 需要一个只读数据库,感谢您告诉我重新阅读。 >.>;;;
    • @Charles 如果您还有其他问题/疑虑,请告诉我
    【解决方案2】:

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

    【讨论】:

    • 这一篇的信息不多,而且绝对不能回答安全方面的问题。
    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多