C#-安全地连接到远程SQL Server?

C#-安全地连接到远程SQL Server?,c#,sql-server,C#,Sql Server,我知道连接到SQL Server数据库很容易,但我不确定如何远程同时连接。。以一种安全的方式 SqlConnection sqlConnection = this.sqlcon(); SqlCommand insertCommand = new SqlCommand("use " + database_telecaster.ToString() + " SELECT Top 1 sid from dbo.Item order by sid desc", sqlConnection); sq

我知道连接到SQL Server数据库很容易,但我不确定如何远程同时连接。。以一种安全的方式

SqlConnection sqlConnection = this.sqlcon();

SqlCommand insertCommand = new SqlCommand("use " + database_telecaster.ToString() + " SELECT Top 1  sid from dbo.Item order by sid desc", sqlConnection);

sqlConnection.Open();
insertCommand.ExecuteNonQuery();

SqlDataReader reader = insertCommand.ExecuteReader();

while (reader.Read())
{
    MaxSid = (reader.GetInt64(0) + 100).ToString();
}
reader.Close();
sqlConnection.Close();
SQL Server con功能:

public SqlConnection sqlcon()
{
    var doc = new XPathDocument(Application.StartupPath + "/DBConn.xml");
    var navigator = doc.CreateNavigator();

    var serverName = navigator.SelectSingleNode("//appsettings/servername");

    var username = navigator.SelectSingleNode("//appsettings/username");
    var password = navigator.SelectSingleNode("//appsettings/password");
    var database = navigator.SelectSingleNode("//appsettings/database");

    object[] objArray = new object[] {
            serverName , database, username , password 
    };

    return new SqlConnection(string.Format("Data Source={0};Initial Catalog={1};User Id={2};Password={3};MultipleActiveResultSets = True", objArray));
}

假设SQL Server安装在Windows VPS上,我将把我的软件提供给不同的人,我希望他们都能访问SQL Server。。。我如何在不打开SQL Server端口的情况下做到这一点?因为据我所知,打开端口会导致被黑客攻击,因为所有人都可以远程连接到该服务器。

这个问题让我想起了我刚开始的时候

无论您做什么,都不要直接连接到数据库,因为要直接连接,您必须在应用程序中存储数据库连接字符串(和密码)。。。你可以把它弄得模糊不清,让它变得模糊不清,这不会有什么不同。。。你基本上要交出城堡的钥匙

相反,您需要开始学习如何创建API,该API对客户端进行身份验证并代表客户端连接到数据层,执行请求的操作,然后返回结果


就我个人而言,我会使用它,它是这项工作的正确工具。有一个轻微的学习曲线,但只要坚持下去,你会有它在几天内解决。从这些开始,它们是一个非常好的资源,完全免费,感谢微软,它们肯定会让你忙个不停

因此,如果我理解正确,那么做这样的事情总是不安全的,相反,我应该创建一个ASP.NET C#网站,创建一个Winforms连接到的函数并获取返回的值?如果我得到了你,SQL信息应该存储在网站上而不是应用程序上,对吗?没错,原因是没有人能看到你的服务器端代码,所以本质上你所做的是将数据库隐藏在web服务后面,您还公开了应用程序用来获取所需数据的某些URL感谢有用的链接:)如果您不介意的话,还有一个问题,现在由于我的URL将通过反编译或其他方法公开,所以每个人都可以访问该页面并获取返回值?制作一个登录系统,只允许我希望他们使用应用程序(服务器端)的人来完成这项工作,对吗?您的URL将在不进行反编译的情况下公开:),下载这个名为的工具。这是一个救命稻草,因为您将确切地看到您的应用程序正在发送到您的网站,以及您的网站正在返回的内容。是的,如果您不实现登录系统,任何具有技术知识的人都可以轻松查看您的端点。您需要对用户进行身份验证,并过滤来自匿名来源的任何请求。(意思是说,任何未通过自身身份验证的用户都不会被授予访问您的数据的权限)一直是Telerik产品的粉丝,但从未听说过该产品:)谢谢你,伙计,您给了我很大的帮助,帮助我改进了大多数使用SQL连接并且应该远程连接的程序:)如果您是从信息片段构建连接,我建议您使用,而不是自己滚动