0

嗨,我目前正在使用 c# xna 创建游戏,并将允许用户拥有某种配置文件系统。因此他们可以创建帐户、登录视图个人资料、成就等。

当我对此进行测试时,我正在使用 SQL Server Express 的本地实例。在测试中这很好,但是在创建成品时可以简单地更改连接字符串以连接到远程可公开访问的 SQL 服务器,否则会产生安全隐患。

例如,有人可以通过程序找出 SQL 服务器的用户名/密码,然后手动连接并造成严重破坏吗?

我是否应该寻求连接到代表我的客户端程序查询数据库的服务器端应用程序,以防止客户端直接访问我的数据库,或者这是一个不必要的抽象?

4

2 回答 2

1

由于安全问题,最好连接到服务器端应用程序,而不是让程序直接连接到数据库。

首先,将 SQL Server 公开在公共 Internet 上通常被认为是安全性差的,因为它存在许多远程攻击。

其次,一般来说,限制每个用户的数据库访问是困难的或不可行的。创建单个数据库帐户通常不切实际,因此所有用户都使用单个帐户连接到数据库。这个单一帐户需要大量访问数据库才能执行必要的功能,这意味着它还可以用于对数据库执行任意恶意查询。一种温和的可能性是UPDATE highscores SET score = 1000000000 WHERE user_id = <my user id>。我见过一些学校管理系统通过对所有用户使用默认的数据库管理员用户名和密码来实现,这些用户名和密码是通过网络以明文形式发送的。这些不是面向公众的,这使它稍微好一点。

与此相关的一些其他问题是:

于 2013-04-15T05:10:48.620 回答
0

如何使用 Microsoft 管理控制台为 SQL Server 实例启用 SSL 加密

连接字符串(sql server 2012):

Provider=SQLNCLI11;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
Encrypt=yes;

连接字符串(sql server 2008):

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
Encrypt=yes;
于 2013-04-15T00:17:36.893 回答