c#windowsform,部署之前的下一步是什么?

问题描述 投票:0回答:1

刚刚在sql managment Studio中使用数据库完成了我的Winforms Clinics程序。我的连接是ADO.NET实体数据模型,我的意思是edmx。我想问你们下一步是什么,问您是否有注射问题以及我应该如何防止注射。我所有的代码都是Linq,我对Linq充满信心,因此注射问题更少。我的问题是三个问题:

1]在实际服务器上部署alaive之前,必须在Visual项目的设置中进行哪些更改。我的winforms项目的属性是否有任何更改?因为现在这将是生产项目。

2)我的第二个问题是,当我添加一个新人员或搜索一个人员时,您是否看到我的代码中缺乏安全性?为了安全起见,我该怎么办?请在下面查看我的一些代码

3)(ADO.NET实体数据模型,ADO.NET实体数据模型)是否适用于此类大型系统?因为我的连接字符串在App.config中,所以它是一个很长的字符串,如下所示,这让我有点害怕。.;)

<add name="ClinicEntities" connectionString="metadata=res://*/MyHealthModel.csdl|res://*/MyHealthModel.ssdl|res://*/MyHealthModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MyComputerName;initial catalog=ClinicDb;user id=***;password=*****;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

以下是我的一些代码:搜索人时:

private void SearchPatient()
{
try
            {
                using (ClinicEntities db = new ClinicEntities())
                {
                    if(txtIdCardnr.Text != string.Empty)
                    {
                        string IdCard = txtIdCardnr.Text.Trim();
                        var patId = db.Patient.Where(x => x.IdentityCardNr == IdCard).FirstOrDefault();
                        if(patId != null)
                        {
                            var reservation = (from u in db.Registration
                                            join p in db.Patient on u.PatientId equals p.PatientId
                                            join ....... you got the idea 
                                            where ......  
                                            select new
                                            {
                                                ReservationNr = u.ReservNr,
                                                ReservationDate = u.ReservationDate,
                                                ........
                                            }

                                  ).ToList();

                            dgvReservations.DataSource =  reservation;

                        }


                    }

                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Exception inner = ex.InnerException;
                while (inner != null)
                {
                    MessageBox.Show(inner.Message);
                    inner = inner.InnerException;
                }
            }
}

并添加新的保留:

private async void AddReservation()
        {
            try
            {
                using (ClinicEntities db = new ClinicEntities())
                {
                    if (IsValidated())
                    { 
                        Reservation pat = new Reservation();
                        pat.SymptomId = Convert.ToInt32(cmbSymptom.SelectedValue);
                        pat.SymptonDate = Convert.ToDateTime(dateTimePicker1.Value.Date);
                        pat.SymptonTime = txtTime.Text.Trim();
                        pat.Notes = txtNoteEmg.Text.Trim();
                        pat.RegisterdBy = StaffId;
                        pat.PatientId = PatientId;  
                        db.Reservation.Add(pat);
                        await db.SaveChangesAsync();


                    }

                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Exception inner = ex.InnerException;
                while (inner != null)
                {
                    MessageBox.Show(inner.Message);
                    inner = inner.InnerException;
                }
            }
        }

所以,你们看到我的代码中缺乏安全性吗?再次感谢您帮助我回答所有三个问题。

c# winforms sql-injection
1个回答
0
投票

不是StackOverflow进行代码审查的地方(但是有一个用于代码审查的堆栈交换站点,并且您的问题可能是在这里的话题)

1)我不太确定服务器如何进入这个方程式;当然,它像其他文件一样仅提供此winforms应用程序进行下载。无需更改

2)我在配置文件中看到未加密的纯文本密码,但是是否在乎是另一回事。即使用户确实使用发现的密码打开了本地数据库,并且四处看看,他们也无法造成任何实际损失。现在,如果该密码与您的生产服务器相同,则可能是更多问题了……您编写的用于进行数据库访问的LINQ不受SQL注入的影响。使其承担责任的唯一方法是执行将用户提供的值串联在一起的原始sql命令

3)我不确定StackOverflow是长连接字符串恐惧症寻求帮助的地方。有用;别理它(可能不加密密码)

© www.soinside.com 2019 - 2024. All rights reserved.