Về cơ bản, bất cứ nơi nào bạn nối các chuỗi lại với nhau để tạo câu lệnh SQL, đặc biệt là câu lệnh xuất phát từ đầu vào của người dùng, đều dễ bị tấn công.
Thay vì làm điều này, hãy sử dụng các tham số SQL, có thể được thêm vào thuộc tính Tham số của lệnh SQL của bạn (SQLcmd
tại đây).
Tôi sẽ chỉ cho bạn một ví dụ với một trong các tham số của bạn - thay đổi văn bản SQLCommand của bạn thành:
INSERT INTO dbo.Patients(pIDNo, ...)
VALUES(@pIDNo, ...)
Ở đâu @pIDNo
là "trình giữ chỗ" trong chuỗi cho giá trị tham số, được gửi riêng với lệnh trong Bộ sưu tập SQLParameters
.
Sau đó, bạn có thể thêm một tham số có cùng tên với "trình giữ chỗ" này và giá trị (nó sẽ lấy kiểu từ giá trị được cung cấp cho bạn).
Đây là ví dụ trước đó:
SQLcmd.Parameters.AddWithValue("@pIDNo", LabelPNumber.Text)