我知道有很多关于这个话题的问题,但是经过四天的阅读和谷歌搜索,我有点困惑,需要有人为我澄清一些事情。
我的情况:
我在C#中开发了一个WPF应用程序。 此应用程序需要连接到数据库,因为它存储useraccount数据和其他数据。到目前为止,我通过设置数据源并使用Fluent NHibernate进行映射和会话,在Visual Studio环境中使用了本地数据库。 现在我想通过ClickOnce将应用程序分发给用户,所以我需要从本地数据库切换到在线数据库。
我有一个Web服务器(Debian 8 Jessie 64Bit,内核版本3.16.0-4-amd64(SMP)),SSH访问和访问i-MSCP 1.3.16平台以管理服务器。我在服务器的一个域和一个sql用户中创建了一个数据库,我可以访问phpmyadmin。
我已经按照步骤授予任何IP远程访问权限,例如SANDHYALAL KUMAR所述的here。
第一个问题:如何检查现在是否已成功授予远程访问权限。因为在执行mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
时,我会通过Putty控制台获得0 rows affected.
吗?
第二个也是更重要的问题:如何将我的WPF现在与我的服务器连接。 我已经读过,我不应该直接连接到服务器,因为密码安全性和数据库安全性,如下所示:
ISessionFactory sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012
.ConnectionString(c => c
.Server("SSS")
.Database("DDD")
.Username("UUU")
.Password("PPP")
).ShowSql()
)
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<User>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(false, false))
.BuildSessionFactory();
return sessionFactory.OpenSession();
但是,我不认为上面的解决方案对我有用,因为我没有在线MSSQL Server,对吧?或者我是否需要配置现有服务器?
是否有特定的图层或API可以解决我的问题。是WCF还是REST或ADO.Net对我来说是一个解决方案?我真的很喜欢这些不同的名字,所以我真的很感谢你对我的两个问题的一些解释和建议。
答案 0 :(得分:1)
您的情况与我的情况几乎相同。 我的应用程序也是WPF(clickonce)并连接到Microsoft Azure Cloud SQL Server。 我也曾经挣扎了好几天,因为你知道,安全始终是最重要的。
在桌面应用程序中设置密码和分发意味着为黑客提供密码。与您评论的一样,使用WCF设置图层并使WCF保持非对称(如RSA)编码的密码。然后,服务器将仅使用非对称密钥对用户进行身份验证以进行解密。此私钥仅存在于服务器中。
回答第一个问题)您可以编写SELECT查询以确认哪些登录,用户具有这些角色,是否启用访问权限。 我确信有用的例子可以在互联网上找到。
希望这有助于您理解......