2013-04-15 155 views
0

嗨,我目前正在创建一个使用c#xna的游戏,并且将允许用户拥有某种配置文件系统。因此,他们可以创建帐户,登录查看配置文件,成就等。直接连接到SQL数据库或通过客户端 - 服务器服务

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

是否有人能够通过程序找到SQL服务器的用户名/密码,然后手动连接并造成严重破坏?

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

回答

0

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

首先,在公共Internet上打开SQL Server通常被认为安全性较差,因为它存在一些远程攻击。

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

与此相关的一些额外的问题是:

0

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

连接字符串(SQL服务器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; 
+0

感谢米奇,从阅读本指南,我需要当涉及到实际部署到购买SSL证书我产品住吗? (网络目前不是我的强项) – user2280611