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);

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

SqlDataReader reader = insertCommand.ExecuteReader();

while (reader.Read())
{
    MaxSid = (reader.GetInt64(0) + 100).ToString();
}
reader.Close();
sqlConnection.Close();

SQL Server 配置函数:

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...我如何在不打开服务器端口的情况下做到这一点数据库服务器?因为据我所知,打开端口会导致被黑客入侵,因为所有人都可以远程连接到该服务器。

最佳答案

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

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

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

就我个人而言,我会使用 ASP.NET Web API ,这是完成这项工作的正确工具。它有一个轻微的学习曲线,但坚持下去,几天后你就会弄明白。从这些开始 PluralSight videos ,它们是完全免费的优秀资源,感谢 Microsoft,它们肯定会让您忙个不停!

关于C# - 安全地连接到远程 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381144/

相关文章:

c# - 如何处理 SQL DB 中的乐观并发冲突?

sql-server - SQL Server 200x 中 SOX/HIPAA 数据加密标准

mysql - twitter 是如何工作的,它是否使用 "in"为关注者选择推文?

c# - 为什么在 .NET 5 中用作泛型类型参数时引用类型为 "slower"?

c# - 错误处理整个类

c# - 通过字符串和 varchar(max) 之间的比较来更新查询

sql-server - 通过HTTP GET读取TSQL中的二进制数据

c# - 默认排除条件和扩展以将它们包括回来

c# - GlobalAssemblyInfo.cs 和强命名

python - pyodbc执行sqlserver存储过程--用户自定义表如何传入DEFAULT参数