c# windows form,部署前的下一步是啥?

Posted

技术标签:

【中文标题】c# windows form,部署前的下一步是啥?【英文标题】:c# windowsform , What is next step before deployment?c# windows form,部署前的下一步是什么? 【发布时间】:2020-08-14 16:21:55 【问题描述】:

刚刚在 sql 管理 Studio 中使用数据库完成了我的诊所 Winforms 程序。 我的连接是 ADO.NET 实体数据模型,我的意思是 edmx。我想问你们下一步是什么,问你们是否看到任何注射问题 以及我应该如何防止注射。我所有的代码都是 Linq,我相信 Linq 可以减少注入问题。 我的问题是三个问题:

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

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

3) (ADO.NET Entity Data Model, ADO.NET Entity Data Model)这样的大系统正常使用吗? 因为我的连接字符串在 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;
                
            
        

那么,你们看到我的代码缺乏安全性了吗?再次感谢您帮助我解决了所有三个问题。

【问题讨论】:

【参考方案1】:

*** 不是进行代码审查的地方(但有一个堆栈交换站点可用于代码审查,您的问题可能与那里有关)

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

2) 我在您的配置文件中看到了一个未加密的纯文本密码,但您是否关心是另一回事。可能即使用户确实使用他们找到的密码打开了本地数据库并环顾四周,他们也不会造成任何真正的损害。现在,如果该密码与您的生产服务器相同,则可能会成为更大的问题……您为进行数据库访问而编写的 LINQ 不受 SQL 注入的影响。使其负责的唯一方法是执行将用户提供的值连接到其中的原始 sql 命令

3) 我不确定 *** 是否是针对长连接字符串恐惧症寻求帮助的地方。有用;别管它(也许除了加密密码)

【讨论】:

感谢您的回复。我会将其发布在推荐的网站上。再次感谢您 这不是在代码审查中发布的说明,而是关于存在代码审查的建议,您应该仔细检查您的问题是否与他们网站的主题有关

以上是关于c# windows form,部署前的下一步是啥?的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 中 RKManagedObject 的下一步是啥

查找此异常原因的下一步是啥?

从 appengine 迁移到完整 django 的下一步是啥?

使用 cx_Freeze 的下一步是啥?

在 vue app 中运行 npm build 以将其部署到服务器上后,下一步是啥?

SaaS已死,软件的下一步是什么?