直接或通过客户端 - 服务器服务连接到SQL数据库

时间:2013-04-15 00:12:41

标签: sql security client-server

您好我正在使用c#xna创建游戏,并允许用户拥有某种配置文件系统。因此,他们可以创建帐户,登录视图配置文件,成就等。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

首先,在公共互联网上打开SQL Server通常被认为安全性较差,因为已经有很多远程攻击。

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

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

答案 1 :(得分:0)

How to enable SSL encryption for an instance of SQL Server by using Microsoft Management Console

连接字符串(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;