1

ここでの最後のいくつかの質問で、インジェクションに対してオープンなコードを書いているという理由で攻撃されました。最終的にこれが最も安全で正しい方法であることを確認するために、正直な助けを求めています. これをできるだけ安全にするためのヒントを教えてください。

using (SqlConnection conn = new SqlConnection(""))
        {
            try
            {
                SqlCommand cmd = new SqlCommand(@"INSERT dbo.Table (FullName, Category, Street, City, State, Zip, PhoneDay, PhoneEven, Email, Employer, Description, UserName, 
                                                  UserStreet, UserCity, UserState, UserZip, UserPhoneDay, UserPhoneEven, UserEmail, SubmitDate) 
                                                  VALUES (@f1, @f2, @f3, @f4, @f5, @f6, @f7, @f8, @f9, @f10, @f11, @f12, @f13, @f14, @f15, @f16, @f17, @f18, @f19, @f20)", conn);
                conn.Open();
                cmd.Parameters.Add("@f1", SqlDbType.NVarChar, 100).Value = NameTxtBox.Text;
                cmd.Parameters.Add("@f2", SqlDbType.NVarChar, 100).Value = HeroicList.SelectedValue;
                cmd.Parameters.Add("@f3", SqlDbType.NVarChar, 100).Value = StreetTxtBox.Text;
                cmd.Parameters.Add("@f4", SqlDbType.NVarChar, 100).Value = CityTxtBox.Text;
                cmd.Parameters.Add("@f5", SqlDbType.NVarChar, 100).Value = StateTxtBox.Text;
                cmd.Parameters.Add("@f6", SqlDbType.NVarChar, 100).Value = ZipTxtBox.Text;
                cmd.Parameters.Add("@f7", SqlDbType.NVarChar, 100).Value = PhoneDayTxtBox.Text;
                cmd.Parameters.Add("@f8", SqlDbType.NVarChar, 100).Value = PhoneEvenTxtBox.Text;
                cmd.Parameters.Add("@f9", SqlDbType.NVarChar, 100).Value = EmailTxtBox.Text;
                cmd.Parameters.Add("@f10", SqlDbType.NVarChar, 100).Value = EmpTxtBox.Text;
                cmd.Parameters.Add("@f11", SqlDbType.NVarChar, 100).Value = WhyTxtBox.Text;
                cmd.Parameters.Add("@f12", SqlDbType.NVarChar, 100).Value = UserNameTxtBox.Text;
                cmd.Parameters.Add("@f13", SqlDbType.NVarChar, 100).Value = UserStreetTxtBox.Text;
                cmd.Parameters.Add("@f14", SqlDbType.NVarChar, 100).Value = UserCityTxtBox.Text;
                cmd.Parameters.Add("@f15", SqlDbType.NVarChar, 100).Value = UserStateTxtBox.Text;
                cmd.Parameters.Add("@f16", SqlDbType.NVarChar, 100).Value = UserZipTxtBox.Text;
                cmd.Parameters.Add("@f17", SqlDbType.NVarChar, 100).Value = UserPhoneDayTxtBox.Text;
                cmd.Parameters.Add("@f18", SqlDbType.NVarChar, 100).Value = UserPhoneEvenTxtBox.Text;
                cmd.Parameters.Add("@f19", SqlDbType.NVarChar, 100).Value = UserEmailTxtBox.Text;
                cmd.Parameters.Add("@f20", SqlDbType.DateTime).Value = DateTime.Now.ToString();
                cmd.ExecuteNonQuery();

                messageLabel.Text = "Your submission has been sent!";
                messageLabel.Visible = true;
            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                messageLabel.Text = ex.Message;
                messageLabel.Visible = true;
            }
        }
4

1 に答える 1