C الجمعية # حقن تحقق
-
03-07-2019 - |
سؤال
وأنا خلق تجميع في C # لMS SQL 2005. هذا التجمع يخلق الإجراء المخزن وتشغيل استعلام ديناميكية تقوم على المعلمات التي تم تمريرها إلى الإجراء المخزن.
هل هناك وظيفة بسيطة في C # لمنع حقن SQL؟
وعلى سبيل المثال
string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";
وكانت الإجابة على هذا السؤال للاستعلام القياسية ... ولكن في الحالات التي لا توجد وسيلة حول إنشاء استعلام ديناميكية حقا ما يمكنني استخدامها في C # لحقن فحص؟
وعلى سبيل المثال، هذه الأعمال ربما متعود:
وباستخدامdbname؛
وSELECT * FROMtable
وفتح متماثل KEYkeyName
وغيرها
المحلول
استخدم المعلمات ملزمة:
SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);
نصائح أخرى
استخدم المعلمات ....
و(لقد تم نشر هذا في كثير من الأحيان بالفعل)
string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = myQuery;
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";
لا تنتمي إلى StackOverflow