【发布时间】: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="data source=MyComputerName;initial catalog=ClinicDb;user id=***;password=*****;MultipleActiveResultSets=True;App=EntityFramework"" 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