C# 将SqlConnection对象作为单个可执行文件的属性是否存在风险?
我有一个设计习惯,用子窗体填充SqlConnection对象,显示子窗体,建立SqlConnection对象,并将填充的对象传递回父窗体,然后继续执行。NET 2.0及以上0,如下所示: 父窗体: 登入表格: 由于这被编译成一个可执行文件(dll访问修饰符被单独处理等等),sqlConnection对象是否存在公共安全风险?有人能在运行时获取信息吗? 将登录信息传递到“主”窗体的更好实现是什么?由于.NET在内部维护a(除非关闭),因此您应该传递a,并在创建新连接时使用它。C# 将SqlConnection对象作为单个可执行文件的属性是否存在风险?,c#,sql,security,accessibility,sqlconnection,C#,Sql,Security,Accessibility,Sqlconnection,我有一个设计习惯,用子窗体填充SqlConnection对象,显示子窗体,建立SqlConnection对象,并将填充的对象传递回父窗体,然后继续执行。NET 2.0及以上0,如下所示: 父窗体: 登入表格: 由于这被编译成一个可执行文件(dll访问修饰符被单独处理等等),sqlConnection对象是否存在公共安全风险?有人能在运行时获取信息吗? 将登录信息传递到“主”窗体的更好实现是什么?由于.NET在内部维护a(除非关闭),因此您应该传递a,并在创建新连接时使用它。 这允许您通过为需要执
这允许您通过为需要执行的所有操作(例如,相对于批处理)创建新连接来保持连接信息的“线程安全” 连接在运行时没有被劫持的风险,因为这应该很好地捆绑到应用程序域中。(有办法,但那是另一种讨论) 它可能看起来效率很低,但由于后台池,传递连接字符串效果很好 所以,为了回答您的问题:实际上不存在安全风险,但存在线程安全风险,所以传递连接字符串而不是连接。这将使您的运行更加顺畅。
另外,请记住在处理完
SqlConnection
s和SqlCommand
s之后,要将它们处理掉;) 由于.NET在内部维护a(除非关闭),因此您应该传递a,并在创建新连接时使用它。这允许您通过为需要执行的所有操作(例如,相对于批处理)创建新连接来保持连接信息的“线程安全” 连接在运行时没有被劫持的风险,因为这应该很好地捆绑到应用程序域中。(有办法,但那是另一种讨论) 它可能看起来效率很低,但由于后台池,传递连接字符串效果很好 所以,为了回答您的问题:实际上不存在安全风险,但存在线程安全风险,所以传递连接字符串而不是连接。这将使您的运行更加顺畅。
另外,请记住在处理完
SqlConnection
s和SqlCommand
s之后,要将它们处理掉;)
public SqlConnection sqlcon; //should be property but made it public for this example
public MainForm_Load(object sender, EventArgs e)
{
Login frm = new Login(this);
frm.ShowDialog();
if (this.sqlcon == null)
{ //no login
this.Close();
}
//else, continue execution
}
Mainform parent;
public Login(RandomParade frm)
{
InitializeComponent();
parent = frm;
}
private void btnOK_Click(object sender, EventArgs e)
{
//code to capture login details from textboxes
//test connection
parent.sqlcon = new SqlConnection("connection string with login details here");
this.Close();
}